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

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

Wait Process [D5, Win95/98, Win2k]


erik ©   (2001-11-15 23:35:00) 

У меня стандартная проблема надо отследить завершение родительской задачи.
//Start в главной задаче
ProcessID := GetCurrentProcessID;
ZeroMemory(@SI, SizeOf(SI));
SI.cb := SizeOf(SI);
SI.dwFlags := STARTF_USESHOWWINDOW;
SI.wShowWindow := SW_HIDE;

CmdParam := "Extractor.exe "+IntToStr(ProcessID)+" "+FileName;
if CreateProcess(nil,PChar(CmdParam), nil, nil, False,
DETACHED_PROCESS, nil, nil, SI, PI) then begin
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
Application.Terminate;
end;
В дочерней задаче
ProcessID := StrToInt(ParamStr(1));
ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, false, ProcessID);
WaitForSingleObject(ProcessHandle, INFINITE);
Неждет!
Что не так?


erik   (2001-11-16 19:25:00) [1]

Все парни несуетитесь. Я исправил в CreateProcess надо поставить CREATE_DEFAULT_ERROR_MODE! И все.


erik   (2001-11-16 16:57:00) [2]

Действительно OpenProcess возвращает ошибку. А что делать? Как мне
подождать завершения породившей задачи.


erik   (2001-11-16 14:21:00) [3]

Если найдутся грамотные люди может быть подскажут как красиво получить ProcessID родителя? У меня возникло ужастное подозрение, что мой код неработает из за отсутствия SYNCHRONIZE or PROCESS_SET_INFORMATION в OpenProcess. Но SYNCHRONIZE неподерживается в 95-98!
Что делать? Неужели никто незнает!? Я системным програмированием почти незанимаюсь, все по базам данных. Так, что мне простительно незнание этого факта. Кто тут умный отзовись.


erik   (2001-11-16 13:59:00) [4]

Нет а Application.Terminate убирал и нехрена неработало!


paul_shmakov   (2001-11-16 11:30:00) [5]

так, скорее всего, родительский процесс уже успевает завершиться. и OpenProcess возвращает nil.


Наверх

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