Frage

Ich habe es geschafft, den Compiler für ein weiteres Programm auszuführen, wenn das Projekt mit der folgenden Richtlinie in Projektoptionen erstellt/ausgeführt wird:

call program.exe param1 param2

Das Problem ist, dass der Compiler "Programm.exe" ausführt und darauf wartet, dass er beendet wird, und dann wird das ausführbare Projekt ausgeführt.

Was ich frage: Wie setze der Compiler so ein, dass beide ausführbaren Ausführungsfähigkeiten parallel ausgeführt werden, ohne auf die Beendigung des Ereignisses nach dem Bauen zu warten?

Danke im Voraus

War es hilfreich?

Lösung

Ich hätte keine Ahnung, wie es der IDE schafft, auf die Beendigung der durch "Start" initiierten Prozesse zu warten, aber "Createprocess" in Ihrem eigenen Programmstarter zu dienen, scheint zu dienen.

Kompilieren sth. wie;

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.

Und dann auf Postbuild:

"X:\...\starter.exe" "X:\...\program.exe" param1 param2

Andere Tipps

Verwenden Sie anstelle von Call Program.exe start programm.exe

Erstellen Sie eine Fledermausdatei. Setzen Sie dort nur wenige Befehle mit Start ein, wie Alan vorschlug:

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

Rufen Sie dann diese Fledermausdatei an.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top