微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保使用ShellExecuteEx启动exe

如何解决如何确保使用ShellExecuteEx启动exe

| 我有一个EXE1,启动时需要配置文件。 我正在使用ShellExecuteEx从EXE2启动EXE1。 这样就可以正常工作,但是如果未为EXE1预设配置文件,则不会启动它,但是ShellExecuteEx返回TRUE(1)。 我正在检查ShellExecuteEx的返回值以禁用启动EXE1的EXE2中的“启动”按钮。 由于ShellExecuteEx返回TRUE(1),因此“启动”按钮为“禁用”错误功能。 我也尝试了CreateProcess,它的行为也相同。 如何确定exe是否启动。     

解决方法

        您将必须以某种方式从第二个程序向第一个程序发出信号-通过使用共享内存,变量或某些其他进程间通信方法。 ShellExecuteEx只关心可执行文件是否能够启动,而不关心它是否能够执行您期望的操作。 或者,改用CreateProcess并监视子进程的返回代码。     ,        如果
ShellExecuteEx
能够启动可执行文件,则返回true。它实际上并不传达已启动应用程序的返回码。 您可以使用WaitForSingleObject在
SHELLEXECUTEINFO
结构中启动的应用程序的句柄(
hProcess
)上等待几毫秒。如果
WaitForSingleObject
返回
WAIT_OBJECT_0
WAIT_ABANDONED
,则可以“假定”已启动的应用程序已退出。如果启动的应用程序继续运行,则您的等待将超时。但是,这不是万无一失的方法。一种更可靠的方法是在应用程序之间具有某种IPC机制,例如管道。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。