windows – 使用ShellExecuteEx启动外部应用程序并等待它初始化
我有一个应用程序,需要在链中运行其他几个应用程序.我通过ShellExecuteEx运行它们.运行每个应用程序的顺序非常重要,因为它们相互依赖.例如:
Start(App1); If App1.IsRunning then Start(App2); If App2.IsRunning then Start(App3); ......................... If App(N-1).IsRunning then Start(App(N)); 一切正常,但有一个可能的问题: 请注意,我不想等待App(N-1)完成然后启动AppN. 我不知道这是否可以用ShellExecuteEx解决,我试过用 SEInfo.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOASYNC; 但没有任何影响. 启动AppN应用程序后,我有一个进程的句柄.如果我假设应用程序在创建主窗口后初始化(所有应用程序都有一个窗口),我可以以某种方式在其消息队列上放置一个挂钩并等待WM_CREATE出现或者WM_ACTIVATE吗?在这种消息的存在下,我的应用程序会知道它可以继续前进. 这只是一个想法.但是,我不知道怎么放这样的钩子.所以,如果你可以帮助我,或者你有一个更好的想法,那将是伟大的:) 此外,该解决方案必须适用于Windows XP及更高版本. 谢谢你的时间. 编辑 @Cosmic Prund:我不明白你为什么删除你的答案?我可能会尝试你的想法……
您可以通过在ShellExecute()返回的每个进程句柄上调用
WaitForInputIdle() 来实现所需的功能.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – Metro应用程序可以识别其他应用程序吗?
- windows – 如何运行命令直到成功?
- Windows 8 – Windows 8准备钉扎网站
- Windows10安装node.js
- 如何实现windows命令提示符的tab补全
- 内存管理 – Windows任务管理器列 – 处理[已关闭]
- 虚拟化 – 是否可以禁用Hyper-V VM的PXE引导?
- hyper-v – 故障转移群集:Microsoft Exchange Server 2010
- Atitit webdav 的问题 -------------大文件传输问题 在某些
- 有没有办法限制用户在Windows XP,Vista,Windows 7中更改文件