Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Win API [D6, Win95/98]


Uncle Archi ©   (2002-12-03 21:25:00) 

Пожалуйста помогите! Как можно узнать о завершении процесса, если имеется Id. WaitforSingleObject и GetExitCodeProcess не подходят, так как они ждут завершения, а мне, если процесс не завершен надо кое-что делать. Помогите. Спасибо за внимание.


paul_shmakov   (2002-12-04 15:00:00) [1]

2 Uncle Archi:

WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);


на самом деле достаточно:

if WaitforSingleObject(ProcessInfo.hProcess, INFINITE) = WAIT_OBJECT_0 then
// процесс завершился

а это проверка, что процесс еще не завершился

if WaitforSingleObject(ProcessInfo.hProcess, 0) = WAIT_TIMEOUT then
// процесс еще работает


Uncle Archi   (2002-12-04 14:51:00) [2]

Спасибо!
(вообще-то не GetExitCode... а сочетание этих функций:

WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);


paul_shmakov   (2002-12-04 14:24:00) [3]

вообще-то нужно еще OpenProcess(SYNCHRONIZE, false, Id) вызвать, есть "имеется Id"


Внук   (2002-12-04 09:45:00) [4]

GetExitCodeProcess ждет завершения??? Это ново.

А вообще вопрос звучит так: подскажите правильную функцию, а то в WinAPI они все неправильные :)) (Без обид).


Игорь Шевченко   (2002-12-04 09:10:00) [5]

Как ни парадоксально, но WaitForSingleObject с параметром Timeout равным чему-то разумному, а не INFINITE. Например, если этот параметр равен 0, то функция не ждет, а просто возвращает статус- завершился процесс или еще нет :-)))


Наверх

Титульная страница Поиск, карта сайта Написать письмо