Показать сообщение отдельно
  #4  
Старый 24.12.2014, 18:41
Аватар для Alex_4444
Alex_4444 Alex_4444 вне форума
Прохожий
 
Регистрация: 22.12.2014
Сообщения: 14
Версия Delphi: XE5
Репутация: 50
По умолчанию

Код:
function RunProgram(name, params: string; runWait: boolean;
                    waitTime: cardinal): boolean;
var
  startInf  : TStartupInfo;
  procInf   : TProcessInformation;
  exitCode  : cardinal;

begin
  FillChar(startInf, SizeOf(TStartUpInfo), 0);

  startInf.cb :=  SizeOf(TStartUpInfo);
  try
    result      :=  CreateProcess(nil,
                                  PChar('"' + name + '" ' + params),
                                  nil,
                                  nil,
                                  false,
                                  NORMAL_PRIORITY_CLASS,
                                  nil,
                                  nil,
                                  startInf,
                                  procInf );
  except
    result := false;
  end;

  if result and runWait then
    with procInf do
      begin
        if waitTime = 0
          then
            WaitforSingleObject(hProcess, INFINITE)
          else
            WaitforSingleObject(hProcess, waitTime);

        result := GetExitCodeProcess(hProcess, exitCode);
        CloseHandle(hThread);
        CloseHandle(hProcess);
      end;

end;

begin
  if not RunProgram('C:\Windows\System32\notepad.exe','D:\1.txt', true, 5000)
    then
      exit;

  RunProgram('C:\Windows\System32\notepad.exe','D:\2.txt', false, 0);
end;

и всё-таки Вам необходимо дождаться выполнения первой программы... Есть два выхода: 1) ждать пока программа сама закроется(рискуем повиснуть) и 2) дать время на выполнение программы, после чего продолжать свои действия.
Ответить с цитированием