Delphi World - Подождать завершения DOS-задачи
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Подождать завершения DOS-задачи

Выдержка из лекций компьютерных курсов. Изучают DOS и Norton Commander. Дословно: Запуск команды NORTON. Если запуск команды NORTON не включен в команду автозапуска, либо в процессе работы осуществлялся выход программы NORTON, то запустить ее можно с помощью посредства nc.exe - это запускающий файл программы NORTON, находится он в каталоге NC, где собрана вся программа.

Каким образом организовать ожидание завершения DOS-задачи? Например, надо подождать, пока заархивируется файл, и далее обработать его.


uses Windows;

procedure RunRarAndWait;
var
  si: TStartupInfo;
  pi: TProcessInformation;
begin
  //подготовливаем записи si и pi к использованию
  FillChar(si, SizeOf(si));
  si.cb := SizeOf(si);
  FillChar(pi, SizeOf(pi));
  //попытаемся запустить рар
  if CreateProcess('rar.exe', 'parameters',
  nil, nil, //безопасность по умолчанию
  false,    //не наследовать хэндлов
  0,        //флаги создания по умолчанию
  nil,      //переменные среды по умолчанию
  nil,      //текущая директория по умолчанию
  si,       //стартовая информация
  pi)       //а в эту запись получим информацию о созданом процессе
  then
  begin
    //удалось запустить рар
    //подождем пока рар работает
    WaitForSingleObject(pi.hProcess, INFINITE);
    //убираем мусор
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
  end
  else
    //выдаем сообщение об ощибке
    MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOK], 0);
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования