Как проверить, выполняется ли данный процесс при наличии его дескриптора
Я использую ShellExecuteEx
для запуска приложения.
После успешного запуска im reading TShellExecuteInfo.hProcess
для получения дескриптора запущенного процесса.
Я хотел бы периодически проверять, работает ли процесс, запущенный моим приложением. Два или более processess с тем же именем могут работать одновременно, и я хочу быть уверен, что мое приложение проверяет правильный процесс.
Я хочу иметь возможность делать это в системах Windows от Windows 2000 до выше.
Я знаю, что есть функция WinAPI GetProcessId
что делает именно то, что я хочу, но не поддерживает Windows 2000.
Спасибо за ваши ответы.
1 ответов
вызов WaitForSingleObject
на этом дескрипторе и используйте параметр timeout равный нулю. Если процесс все еще выполняется, функция возвращает Wait_Timeout
; если процесс завершен, то он вернет Wait_Object_0
(потому что завершение процесса приводит к тому, что его дескрипторы становятся сигналил.)
если вы хотите знать, каково состояние выхода процесса, то вызовите GetExitCodeProcess
.