Показать сообщение отдельно
  #1  
Старый 27.10.2008, 14:03
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию Запуск процесса, ожидание его завершения

Добрый день.

Можно ли сделать так:

1. Запустить процесс. (Например архивирование файла).
2. Ждать его завершения. (Но пока процесс не завершился, выводить что нибудь на экран)
3. Перейти далее... (например к отправке файла по почте). Это я сам сделаю...


Если делать так:
Код:
uses Windows;

var
  SI: _STARTUPINFOA;
  PI: _PROCESS_INFORMATION;
  RarParam : String;
begin
  RarParam := 'rar.exe a -ep ' + dPath + 'tmp\'+ FileName + '.rar ' + dPath + FileName;
  FillChar(SI, sizeof(SI), #0);
  SI.cb:=sizeof(SI);
  FillChar(PI, sizeof(PI), #0);
  CreateProcess(nil,PAnsiChar(RarParam),nil,nil,false,0,nil,nil,SI,PI);
  WaitForInputIdle(PI.hProcess, INFINITE);
  WaitForSingleObject(PI.hProcess,INFINITE);
  ShowMessage('Finish');
end;

То, естественно, сообщение Finish появиться когда rar закроется.

Как можно периодически опрашивать состояние процесса?
Ответить с цитированием