В Windows 3.1, API функция IsTask() можно было использовать для определения запущен-ли всё ещё процесс или уже завершён. В Win32 API эта функция считается устаревшей.
В Win32 API для этих целей используется API функция GetExitCodeProcess(). Эта функция получает в качестве первого параметра дескриптор и возвращает код выхода либо STILL_ACTIVE во втором параметре: BOOL GetExitCodeProcess(hProcess, lpdwExitCode) HANDLE hProcess; LPDWORD lpdwExitCode;
Как альтернативу, можно так же использовать WaitForSingleObject(). Передаём дескриптор процесса в качестве первого параметра и значение таймаута в качестве второго: DWORD WaitForSingleObject(hObject, dwTimeout) HANDLE hObject; DWORD dwTimeout;
Дескриптор процесса сообщает, когда процесс завершён. Если мы хотим просто опросить, то в качестве таймаута надо передать 0 (ноль) либо запустить другой поток со значением таймаута INFINITE, чтобы ждать его завершения. |