我正在使用 ShellExecuteEx
启动应用程序。
成功启动后,我会读取 TShellExecuteInfo.hProcess
以获取已启动进程的句柄。
我想定期检查我的应用程序启动的进程是否仍在运行。 两个或多个同名进程可以同时运行,我想确保我的应用程序正在检查正确的进程。
我希望能够在 Windows 2000 及更高版本的 Windows 系统上执行此操作。
我知道 WinAPI 函数 GetProcessId
正在做我想做的事情,但它不支持 Windows 2000。
感谢您的回答。
最佳答案
调用WaitForSingleObject
在该句柄上,并使用零超时参数。如果进程仍在运行,函数将返回Wait_Timeout
;如果进程已终止,则它将返回 Wait_Object_0
(因为进程终止导致其句柄变为有信号。)
如果你想知道进程的退出状态是什么,那么调用GetExitCodeProcess
.
关于windows - 如何在拥有句柄时检查给定进程是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6493626/