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

标签 windows delphi process handle

我正在使用 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/

相关文章:

algorithm - 你如何在 Delphi 中实现 Levenshtein 距离?

delphi - Delphi 2010按钮丢失点击事件

c# - 使用 Process.Start 启动 WPF 应用程序

windows - Cygwin 上的 tdbloader : java. lang.NoClassDefFoundError

python - 在python中从返回的JSON转换unicode字符

list - Delphi 中 Dijkstra 最短路径搜索的优化

Java ADB shell 不返回任何内容

php - 使用 Symfony Process 控制与 PHP 的交互过程

windows - 识别和拦截函数调用

windows - SetWindowPlacement 不移动某些窗口