Запуск внешнего приложения и ожидание его завершения

Пример показывает как из Вашей программы запустить внешнее приложение и подождать его завершения.


function ExecAndWait(const FileName,  
                     Params: ShortString;  
                     const WinState: Word): boolean; export;   
var   
  StartInfo: TStartupInfo;   
  ProcInfo: TProcessInformation;   
  CmdLine: ShortString;   
begin   
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }   
  CmdLine := '"' + Filename + '" ' + Params;   
  FillChar(StartInfo, SizeOf(StartInfo), #0);   
  with StartInfo do   
  begin   
    cb := SizeOf(SUInfo);   
    dwFlags := STARTF_USESHOWWINDOW;   
    wShowWindow := WinState;   
  end;   
  Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,   
                          CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,   
                          PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);   
  { Ожидаем завершения приложения }   
  if Result then   
  begin   
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);   
    { Free the Handles }   
    CloseHandle(ProcInfo.hProcess);   
    CloseHandle(ProcInfo.hThread);   
  end;   
end;   

А вот пример вызова этой функции:


ExecAndWait( 'C:\windows\calc.exe', '', SH_SHOWNORMAL)   

Параметр FileName = Имя внешней программы.
Параметр Params = Параметры, необходимые для запуска внешней программы
Параметр WinState = Указывает - как будет показано окно:
Для этого параметра мы можем так же использовать следующие константы: SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOWNORMAL
PS: Этот код тестировался в delphi версий 3, 4 и 5.

Автор: Fabrнcio Fadel Kammer
Теги:
реестр
Добавлено: 31 Июля 2018 07:27:53 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...