Как проверить, выполняется ли данный процесс при наличии его дескриптора

Я использую ShellExecuteEx для запуска приложения. После успешного запуска im reading TShellExecuteInfo.hProcess для получения дескриптора запущенного процесса.

Я хотел бы периодически проверять, работает ли процесс, запущенный моим приложением. Два или более processess с тем же именем могут работать одновременно, и я хочу быть уверен, что мое приложение проверяет правильный процесс.

Я хочу иметь возможность делать это в системах Windows от Windows 2000 до выше.

Я знаю, что есть функция WinAPI GetProcessId что делает именно то, что я хочу, но не поддерживает Windows 2000.

Спасибо за ваши ответы.

1 ответов


вызов WaitForSingleObject на этом дескрипторе и используйте параметр timeout равный нулю. Если процесс все еще выполняется, функция возвращает Wait_Timeout; если процесс завершен, то он вернет Wait_Object_0 (потому что завершение процесса приводит к тому, что его дескрипторы становятся сигналил.)

если вы хотите знать, каково состояние выхода процесса, то вызовите GetExitCodeProcess.