Форум: "WinAPI";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];
ВнизWait Process Найти похожие ветки
← →
erik (2001-11-15 23:35) [0]У меня стандартная проблема надо отследить завершение родительской задачи.
//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);
Неждет!
Что не так?
← →
paul_shmakov (2001-11-16 11:30) [1]так, скорее всего, родительский процесс уже успевает завершиться. и OpenProcess возвращает nil.
← →
erik (2001-11-16 13:59) [2]Нет а Application.Terminate убирал и нехрена неработало!
← →
erik (2001-11-16 14:21) [3]Если найдутся грамотные люди может быть подскажут как красиво получить ProcessID родителя? У меня возникло ужастное подозрение, что мой код неработает из за отсутствия SYNCHRONIZE or PROCESS_SET_INFORMATION в OpenProcess. Но SYNCHRONIZE неподерживается в 95-98!
Что делать? Неужели никто незнает!? Я системным програмированием почти незанимаюсь, все по базам данных. Так, что мне простительно незнание этого факта. Кто тут умный отзовись.
← →
erik (2001-11-16 16:57) [4]Действительно OpenProcess возвращает ошибку. А что делать? Как мне
подождать завершения породившей задачи.
← →
erik (2001-11-16 19:25) [5]Все парни несуетитесь. Я исправил в CreateProcess надо поставить CREATE_DEFAULT_ERROR_MODE! И все.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c