我有一个EXE1,它在启动时需要配置文件。
我正在使用ShellExecuteEx从EXE2启动EXE1。
它工作得很好,但是如果配置文件没有为EXE1预先设置,那么它就不会启动,但是ShellExecuteEx会返回TRUE(1)。
我正在检查ShellExecuteEx的返回值,以禁用EXE2中用于启动EXE1的" launch“BUtton。
由于ShellExecuteEx返回TRUE(1),因此启动按钮被禁用,这是错误功能。
我也用CreateProcess试过了,它的行为也是一样的。
如何确保exe已启动或未启动。
发布于 2011-06-15 12:47:17
您必须以某种方式从第二个程序向第一个程序发出信号--通过使用共享内存、突变体或其他一些进程间通信方法。
ShellExecuteEx只关心可执行文件是否能够启动,而不是它是否能够执行您期望的操作。
或者,改用CreateProcess并监视子进程的返回码。
发布于 2011-06-15 13:29:01
如果能够启动可执行文件,则ShellExecuteEx返回true。它实际上并不传达启动的应用程序的返回代码。
您可以在SHELLEXECUTEINFO结构中使用WaitForSingleObject在已启动应用程序的句柄(hProcess)上等待几毫秒。如果WaitForSingleObject返回WAIT_OBJECT_0或WAIT_ABANDONED,则可以“假定”启动的应用程序已经退出。如果启动的应用程序继续运行,那么等待将超时。然而,这并不是一个万无一失的方法。一种更健壮的方法是在应用程序之间建立某种进程间通信机制,比如pipe。
https://stackoverflow.com/questions/6353104
复制相似问题