如何在PostBuild事件上并行执行程序?

时间:2010-04-01 06:29:27

标签: delphi events msbuild delphi-2009 post-build-event

我设法将编译器设置为在项目选项中使用以下指令构建/运行项目时执行另一个程序:

call program.exe param1 param2

问题是编译器执行“program.exe”并等待它终止,然后运行项目可执行文件。

我要问的是:如何设置编译器并行运行两个可执行文件而不等待PostBuild事件中的可执行文件终止?

提前致谢

3 个答案:

答案 0 :(得分:2)

我不知道IDE如何设法等待“start”启动的进程终止,但是在你自己的程序启动器中调用“CreateProcess”最简单似乎可以服务。

编译某事等;

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

答案 1 :(得分:0)

使用start program.exe

代替调用program.exe

答案 2 :(得分:0)

创建一个bat文件。正如Alan建议的那样,在启动时输入一些命令:

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

然后调用此bat文件。