Программирование на Delphi и не только Как запустить программу и дождаться ее закрытия? | Программирование на Delphi и не только

Delphi FAQ >> Окна

Иногда может потребоваться запустить стороннею программу, дать ей отработать (или дать пользователю в ней поработать) и затем продолжить выполнение своей программы. Такую схему можно наблюдать в апплете Windows «Установка и удаление программ» (мы даже как-то реализовывали функционал этого апплета). Ниже приведена функция на языке программирования Delphi, которая запускает указанный процесс, ждет его завершения и возвращает управление в программу:


function StartAndWait(cmdline: String): Boolean;
var   si: Startupinfo;   pi: Process_information;

begin

  result := false;   zeromemory( @si,sizeof(si) );   si.cb := sizeof(si);

  //пробуем создать процесс, используя заданную командную строку


  //в случае неудачи выходим из функции с результатом False
  if not createprocess( nil, pchar(cmdline), nil, nil, false, 0, nil, nil, si, pi ) then     exit;

  //ждем пока процесс не завершится


  //infinite - означает, что ждем без ограничения во времени   WaitForSingleObject( pi.hprocess, infinite );

  //завершаем процесс

  closehandle( pi.hprocess );   closehandle( pi.hthread );

  //возвращаем True

  Result := True;

end;


Если вы студент, то интересная работа для студентов в Киеве вас может заинтересовать.