![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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.