我有一个EXE1,启动时需要一个Config文件。
我正在使用ShellExecuteEx从EXE2启动EXE1。
它正常工作,但是如果没有为EXE1预设配置文件,那么它不会启动但是ShellExecuteEx返回TRUE(1)。
我正在检查ShellExecuteEx的返回值以禁用启动EXE1的EXE2中的“Launch”BUtton。
由于ShellExecuteEx返回TRUE(1)所以启动按钮是禁用哪个错误的功能。
我也尝试使用CreateProcess,它的行为方式也相同。
如何确保启动exe。
答案 0 :(得分:2)
您必须以某种方式从第二个程序发信号到第一个程序 - 通过使用共享内存,突变体或其他一些进程间通信方法。
ShellExecuteEx只关心可执行文件是否能够启动,而不是它是否能够按预期执行。
或者,使用CreateProcess代替并监视子进程的返回代码。
答案 1 :(得分:1)
ShellExecuteEx
能够启动可执行文件,则返回true。它实际上并没有传达启动的应用程序的返回代码。
您可以使用WaitForSingleObject在hProcess
struct中启动的应用程序句柄(SHELLEXECUTEINFO
)上等待几毫秒。如果WaitForSingleObject
返回WAIT_OBJECT_0
或WAIT_ABANDONED
,您可以'假设'已启动的应用已退出。如果启动的应用程序继续运行,那么您的等待将超时。但是,这不是一个万无一失的方法。一种更强大的方法是在应用程序之间使用pipe之类的IPC机制。