我写了一个简单的 win32 程序说abc.exe
。
我在其中添加了一个按钮,点击外部 exe 说xyz.exe
应该开始。
但abc.exe
正在运行时,原始程序即xyz.exe
应该无法访问。 (与消息框的情况相同,父窗口保持不活动状态,除非消息框关闭)
怎么可以呢? 如果您可以发布示例代码,那就太棒了。
答案 0 :(得分:1)
您可以使用WaitForSingleObject
(IIRC)等待新进程终止。在等待之前,您可以使窗口不可见(例如,通过ShowWindow
)。首先检查成功启动。
答案 1 :(得分:0)
按下按钮时,使用CreateProcess
函数创建'xyz.exe'进程,并将新进程'句柄(hProcess
保存在PROCESS_INFORMATION
结构中CreateProcess
1}})。
然后,您可以通过将EnableWindow
设置为bEnable
来调用FALSE
来禁用“abc.exe”窗口。
在'abc.exe'的窗口过程中,处理WM_PAINT
消息时,添加一个检查以查看'xyz.exe'进程是否仍在运行。您可以使用GetExitCodeProcess
函数和之前保存的句柄并检查返回值是否为STILL_ACTIVE
来执行此操作。如果'xyz.exe'进程不再处于活动状态,则可以再次使用EnableWindow
启用'abc.exe'窗口。