如何在具有句柄时检查给定进程是否正在运行

时间:2011-06-27 13:33:09

标签: windows delphi process handle

我正在使用ShellExecuteEx来启动应用程序。 成功开始后,我正在阅读TShellExecuteInfo.hProcess以获取已启动流程的句柄。

我想定期检查我的应用程序启动的进程是否仍在运行。 两个或多个同名的进程可以同时运行,我想确保我的应用程序正在检查正确的进程。

我希望能够在从Windows 2000到上面的Windows系统上执行此操作。

我知道WinAPI函数GetProcessId正在完全按照我的意愿行事,但它不支持Windows 2000。

感谢您的回答。

1 个答案:

答案 0 :(得分:14)

在该句柄上调用WaitForSingleObject,并使用零参数。如果进程仍在运行,该函数将返回Wait_Timeout;如果进程已终止,则它将返回Wait_Object_0(因为进程终止导致其句柄变为信号。)

如果您想知道流程的退出状态,请拨打GetExitCodeProcess