Как выполнить программу для события PostBuild параллельно? - PullRequest
2 голосов
/ 01 апреля 2010

Мне удалось настроить компилятор на выполнение другой программы при сборке / запуске проекта со следующей директивой в опциях проекта:

call program.exe param1 param2

Проблема в том, что компилятор выполняет «program.exe» и ожидает его завершения, а затем запускается исполняемый файл проекта.

Что я спрашиваю: как настроить компилятор для параллельного запуска обоих исполняемых файлов, не дожидаясь завершения в событии PostBuild?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 05 апреля 2010

Я бы понятия не имел, как IDE удается ожидать завершения процессов, инициированных «start», но вызов «CreateProcess» в самом простом виде в вашем собственном программном стартере, кажется, служит.

Компиляция sth. как;

program starter;

{$APPTYPE CONSOLE}

uses
  sysutils, windows;

var
  i: Integer;
  CmdLine: string;
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
begin
  try
    if ParamCount > 0 then begin
      CmdLine := '';
      for i := 1 to ParamCount do
        CmdLine := CmdLine + ParamStr(i) + ' ';
      ZeroMemory(@StartInfo, SizeOf(StartInfo));
      StartInfo.cb := SizeOf(StartInfo);
      ZeroMemory(@ProcInfo, SizeOf(ProcInfo));
      if not CreateProcess(nil, PChar(CmdLine), nil, nil, False,
                      NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcInfo) then
        raise Exception.Create(Format('Failed to run: %s'#13#10'Error: %s'#13#10,
                            [CmdLine, SysErrorMessage(GetLastError)]));
    end;
  except
    on E:Exception do begin
      Writeln(E.ClassName + ', ' +  E.Message);
      Writeln('... [Enter] to dismiss ...');
      Readln(Input);
    end;
  end;
end.

и затем на PostBuild поставить:

"X:\...\starter.exe" "X:\...\program.exe" param1 param2
0 голосов
/ 01 апреля 2010

Создать файл bat. Поместите несколько команд с запуском, как предложил Алан:

start program.exe param1 param2
start program.exe param1 param2
start program.exe param1 param2 
start program.exe param1 param2

Тогда вызовите этот файл летучей мыши.

0 голосов
/ 01 апреля 2010

Вместо вызова program.exe, используйте start program.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...