· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Как узнать закончился ли процесс

Посл.отвђт Сообщенiе


Дата: Авг 14, 2004 13:47:49

Как проверить работает ли процесс консольного приложения, или он уже завершился, если у меня есть ProcessID и хандл этого процесса.


Дата: Авг 14, 2004 14:05:17

Шрайбер:
"...Структура DISPATCH_HEADER в начале объекта процесса свидетельствует о том, что этот объект является объектом синхронизации... Объект процесса переходит в сигнальное состояние после того, как процесс завершил свою работу..."


WaitForSingleObject(hProcess,INFINITE).


Дата: Авг 14, 2004 14:19:23

Чё то не совсем то, на сколько я понял WaitForSingleObject стопорит поток из которого вызвана эта функция до тех пор пока объект (в моём случае это - консольное приложение) не завершит свою работу, а мне всего-то надо функцию на подобие: ProcessIsRunning(ProcessID:DWORD):Boolean


Дата: Авг 14, 2004 14:33:59

„функцию на подобие: ProcessIsRunning“
exitcode dd ?
invoke   GetExitCodeProcess,hProcess,addr exitcode
cmp      exitcode,STILL_ACTIVE
jz       running


Дата: Авг 14, 2004 15:49:10

Оффтоп, небольшая оптимизация:
push     eax
invoke   GetExitCodeProcess,hProcess,esp
pop      eax
cmp      eax,STILL_ACTIVE
jz       running


Дата: Авг 14, 2004 16:14:49

„небольшая оптимизация:“

Хороший приёмчик , беру на заметку ;) Довольно часто может пригодиться


Дата: Авг 14, 2004 20:32:53

Iczelion, тутор № ..., короче про Процессы ;-)


Дата: Авг 15, 2004 10:17:18 · Поправил: Eraser

bogrus
THX
Asterix
THX наткнулся ещё на №21 про пайпы - тоже пригодилось, только в этом случае не отсылается ни CTRL_C_EVENT ни CTRL_C_EVENT. :(((
А TerminatePeocess(hProcess) в этом случае нормальный способ выхода из консольной программы или это подобие RESET вместо ShutDown'a :))


Дата: Авг 16, 2004 04:48:01

Eraser
на сколько я понял WaitForSingleObject стопорит поток
Что/кто мешает в качестве второго параметра не указывать INFINITE?


Дата: Авг 16, 2004 16:26:09

Eraser
q_q
Цитата из MSDN'а про WaitForSingleObject: If dwMilliseconds is zero, the function tests the object's state and returns immediately.


Дата: Авг 17, 2004 03:49:58

Sk. Inc.
Да я собственно и не против.


Дата: Авг 17, 2004 16:06:01

bogrus

Как насчет "хитрого" процесса, который делает ExitProcess(STILL_ACTIVE);? ;)
Все-таки WaitForSingleObject надежнее будет...


Дата: Авг 17, 2004 18:07:39 · Поправил: bogrus

Гм.. действительно . Ещё как вариант можна заюзать GetProcessTimes (только на NT)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074