首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保使用ShellExecuteEx启动exe

如何确保使用ShellExecuteEx启动exe
EN

Stack Overflow用户
提问于 2011-06-15 12:43:46
回答 2查看 507关注 0票数 0

我有一个EXE1,它在启动时需要配置文件。

我正在使用ShellExecuteEx从EXE2启动EXE1。

它工作得很好,但是如果配置文件没有为EXE1预先设置,那么它就不会启动,但是ShellExecuteEx会返回TRUE(1)。

我正在检查ShellExecuteEx的返回值,以禁用EXE2中用于启动EXE1的" launch“BUtton。

由于ShellExecuteEx返回TRUE(1),因此启动按钮被禁用,这是错误功能。

我也用CreateProcess试过了,它的行为也是一样的。

如何确保exe已启动或未启动。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-15 12:47:17

您必须以某种方式从第二个程序向第一个程序发出信号--通过使用共享内存、突变体或其他一些进程间通信方法。

ShellExecuteEx只关心可执行文件是否能够启动,而不是它是否能够执行您期望的操作。

或者,改用CreateProcess并监视子进程的返回码。

票数 2
EN

Stack Overflow用户

发布于 2011-06-15 13:29:01

如果能够启动可执行文件,则ShellExecuteEx返回true。它实际上并不传达启动的应用程序的返回代码。

您可以在SHELLEXECUTEINFO结构中使用WaitForSingleObject在已启动应用程序的句柄(hProcess)上等待几毫秒。如果WaitForSingleObject返回WAIT_OBJECT_0WAIT_ABANDONED,则可以“假定”启动的应用程序已经退出。如果启动的应用程序继续运行,那么等待将超时。然而,这并不是一个万无一失的方法。一种更健壮的方法是在应用程序之间建立某种进程间通信机制,比如pipe

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6353104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档