Как использовать GetExitCodeProcess() вместо IsTask()
В 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, чтобы ждать его завершения.