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

Wod*_*dzu 6 windows delphi process handle

我正在ShellExecuteEx用来启动一个应用程序.成功启动后即可读取TShellExecuteInfo.hProcess获取启动过程的句柄.

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

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

我知道有WinAPI功能GetProcessId正在做我想要的但它不支持Windows 2000.

谢谢您的回答.

Rob*_*edy 15

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

如果您想知道进程的退出状态是什么,请调用GetExitCodeProcess.