如何确保使用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机制,例如管道。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...