gpt4 book ai didi

c++ - 打开一个程序并知道它是否打开

转载 作者:可可西里 更新时间:2023-11-01 09:52:25 27 4
gpt4 key购买 nike

我想用 C++ 编写一个可以打开 .exe 程序的程序,并且我想知道它何时被用户关闭。我知道我可以通过这段代码打开一个程序:

system ("start C:\\AAA.exe");

但是我不知道如何检查程序是否关闭。

最佳答案

在 Windows 上,如果您使用 CreateProcess() 而不是 system() 来启动新进程。简化代码:

PROCESS_INFORMATION processInformation;
CreateProcess(..., &processInformation);

PPROCESS_INFORMATION 中,您可以找到它的句柄。使用它的句柄,您可以等待它终止(模仿 system() 的工作方式):

WaitForSingleObject(processInformation.hProcess, INFINITE);

或者如果您的代码必须与子进程一起运行,则定期检查其状态以获取其退出代码(如果有的话,另请参阅 How to determine if a Windows Process is running?):

DWORD exitCode;
BOOL isActive = STILL_ACTIVE == GetExitCodeProcess(processInformation.hProcess, &exitCode);

不要忘记关闭句柄(即使进程已经终止):

CloseHandle(processInformation.hProcess);

请注意,使用该代码您不知道进程终止的原因。这可能是因为用户关闭了它的窗口,因为它自己终止了或者因为它崩溃了。对于 GUI 应用程序,您可以 Hook 其主窗口消息以查找 WM_CLOSE(以检测用户操作)、WM_QUIT(应用程序已完成)并使用 SetUnhandledExceptionFilter 附加处理程序()(检测未处理的错误)。它不是 100% 可靠,但它可能对另一个问题很重要......

关于c++ - 打开一个程序并知道它是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35081381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com