Форум: "WinAPI";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
ВнизПолучение кода возврата процесса из консольного приложения Найти похожие ветки
← →
jav (2003-08-04 17:52) [0]Требуется запустить процесс (внешнюю программу) на выпонение и получить код возврата программы для последующей обработки. При этом необходимо дождаться окончания процесса...
← →
HolACost (2003-08-04 19:53) [1]ИМХО CreateProcess!
← →
Evgeny V (2003-08-05 05:35) [2]Еще к CreateProcess добавлю WaitForSingleObject - ожидание завершения и GetExitCodeProcess
← →
jav (2003-08-05 16:20) [3]CreateProcess - это ясно и так... Приложение консоль - для него WaitForSingleObject не работает... (источник - Справочная система Delphi) Есть еще варианты? :)
← →
Игорь Шевченко (2003-08-05 16:56) [4]Работает и прекрасно, в том числе и для консольных приложений
← →
jav (2003-08-05 17:24) [5]>Игорь Шевченко - хотите сказать, что справочной системе можно не верить?
← →
HolACost_ (2003-08-05 17:29) [6]Ага! Смотря что вы в качестве объекта синхронизации засовывали в функцию!
А верить или нет - это ваш выбор - но надо было проверить сначала, чем утверждать обратное!
← →
Игорь Шевченко (2003-08-05 18:08) [7]jav (05.08.03 17:24)
Можно верить. Но справочной системе Windows SDK
← →
Игорь Шевченко (2003-08-05 18:09) [8]Извиняюсь за оффтопик, но нельзя ли узнать, что именно написано
в " (источник - Справочная система Delphi) " про WaitForSingleObject и консольные приложения ?
← →
Polevi (2003-08-06 09:16) [9]ничего :)
← →
jav (2003-08-07 08:32) [10]Привожу выдержку из справочной системы Delphi7 Windows SDK...
[cut]
The WaitForInputIdle function waits until the given process is waiting for user input with no input pending, or until the time-out interval has elapsed.
The WaitForInputIdle function only works with GUI applications. If a console application calls the function, it returns immediately, with no wait.
[cut]
Прокоментируйте, пожалуйста... :) (Polevi, Игорь Шевченко)
>HolACost_ Чтобы попробывать надо иметь на это время (его пока нет, а мне легче спросить...) Тем более, что я не "утверждаю", а воспрошаю - почувсвуйте разницу... Был бы я достаточно осведомлен в CreateProcess и функциях иже с ним,, я бы не спрашивал - правда логично?
← →
Игорь Шевченко (2003-08-07 09:40) [11]WaitForSingleObject
и
WaitForInputIdle
- какие уж тут комментарии :)
Вот пример запуска консольного приложения и ожидания его завершения:
procedure TfMain.DumpFile(const FileName : String);
var
ShellInfo : TShellExecuteInfo;
ParamsString : String;
begin
ParamsString := Format("-em %s %s.aaa", [FileName, FileName]);
ShellInfo.cbSize := SizeOf(ShellInfo);
ShellInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ShellInfo.Wnd := Handle;
ShellInfo.lpVerb := "open";
ShellInfo.lpFile := "tdump";
ShellInfo.lpParameters := PChar(ParamsString);
ShellInfo.lpDirectory := nil;
ShellInfo.nShow := SW_SHOW;
if NOT ShellExecuteEx(@ShellInfo) then
RaiseLastWin32Error();
if ShellInfo.hProcess <> 0 then
try
WaitForSingleObjectEx(ShellInfo.hProcess, INFINITE, false);
finally
( ShellInfo.hProcess)WaitForSingleObject
и
WaitForInputIdle
- какие уж тут комментарии :)
Вот пример запуска консольного приложения и ожидания его завершения:
procedure TfMain.DumpFile(const FileName : String);
var
ShellInfo : TShellExecuteInfo;
ParamsString : String;
begin
ParamsString := Format("-em %s %s.aaa", [FileName, FileName]);
ShellInfo.cbSize := SizeOf(ShellInfo);
ShellInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ShellInfo.Wnd := Handle;
ShellInfo.lpVerb := "open";
ShellInfo.lpFile := "tdump";
ShellInfo.lpParameters := PChar(ParamsString);
ShellInfo.lpDirectory := nil;
ShellInfo.nShow := SW_SHOW;
if NOT ShellExecuteEx(@ShellInfo) then
RaiseLastWin32Error();
if ShellInfo.hProcess <> 0 then
try
WaitForSingleObjectEx(ShellInfo.hProcess, INFINITE, false);
finally
CloseHandle(ShellInfo.hProcess);
end;
end;
← →
jav (2003-08-11 08:30) [12]Виноват... WaitForSingleObject и
WaitForInputIdle - на первое не натыкался, и почел желаемое за действительное... :)
Благодарствую! (хотя код возврата Вы мне так и не вернули... но это уже не важно!)
← →
Игорь Шевченко (2003-08-11 12:58) [13]А код возврата, очевидно, возвращается вызовом GetExitCodeProcess
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c