我正在使用ShellExecuteEx
来启动应用程序。
成功开始后,我正在阅读TShellExecuteInfo.hProcess
以获取已启动流程的句柄。
我想定期检查我的应用程序启动的进程是否仍在运行。 两个或多个同名的进程可以同时运行,我想确保我的应用程序正在检查正确的进程。
我希望能够在从Windows 2000到上面的Windows系统上执行此操作。
我知道WinAPI函数GetProcessId
正在完全按照我的意愿行事,但它不支持Windows 2000。
感谢您的回答。
答案 0 :(得分:14)
在该句柄上调用WaitForSingleObject
,并使用零参数。如果进程仍在运行,该函数将返回Wait_Timeout
;如果进程已终止,则它将返回Wait_Object_0
(因为进程终止导致其句柄变为信号。)
如果您想知道流程的退出状态,请拨打GetExitCodeProcess
。