![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запустить другое приложение и дождаться его завершения? [D6]
SergP © (2005-01-27 23:40:00)Консольное приложение должно создать файл, заархивировать его с помощью внешнего архиватора (arj), а затем с архивом выполнить определенные действия. однако если запускать arj обычными методами, то выполнения приложения при этом не приостанавливается. А ведь мне нужно дождаться пока не закончится архивирование. Как это можно сделать?
DrPass (2005-01-27 23:43:00) [1]CreateProcess + WaitForSingleObject
Gero (2005-01-27 23:43:00) [2]function ExecAndWait(FileName: string): Boolean;
var
zAppName: array[0..512] of Char;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
Res: Cardinal;
begin
StrLCopy(zAppName, PChar(FileName), Length(FileName));
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_SHOW;
if not CreateProcess(nil, zAppName, nil, nil, False, CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
Result := False
else
begin
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, Res);
Result := Res = 0;
end;
end;