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

 
« Предыдущая статья   Следующая статья »