我想用C ++编写一个可以打开.exe程序的程序,我想知道用户何时关闭它。我知道我可以通过以下代码打开程序:
system ("start C:\\AAA.exe");
但是,我不知道如何检查程序是否已关闭。
答案 0 :(得分:3)
在Windows上,如果您使用system()
而不是PROCESS_INFORMATION processInformation;
CreateProcess(..., &processInformation);
来启动新流程。简化代码:
PPROCESS_INFORMATION
在system()
中找到它的句柄。有了它的句柄,你可以等待它终止(模仿WaitForSingleObject(processInformation.hProcess, INFINITE);
的工作方式):
DWORD exitCode;
BOOL isActive = STILL_ACTIVE == GetExitCodeProcess(processInformation.hProcess, &exitCode);
如果您的代码必须与子进程一起运行,请定期检查其状态是否获取其退出代码(如果有,请参阅How to determine if a Windows Process is running?):
CloseHandle(processInformation.hProcess);
不要忘记关闭句柄(即使进程已经终止):
WM_CLOSE
请注意,使用该代码,您不知道进程终止的原因。这可能是因为用户关闭了它的窗口,因为它自己终止或因为它崩溃了。对于GUI应用程序,您可以挂钩其主窗口消息,查找WM_QUIT
(以检测用户操作),SetUnhandledExceptionFilter()
(应用程序执行此操作)并使用ImageView
附加处理程序(以检测未处理的错误) )。它不是100%可靠,但它可能是另一个问题的材料......
答案 1 :(得分:0)
调用LinearSVC
您可以阻止,直到进程AAA.exe完成。
如果不可接受,您可以在单独的帖子中调用system ("C:\AAA.exe");
,并检查它是否已完成。
system ("C:\AAA.exe");