I'd have no clue how the IDE manages to wait for the termination of processes initiated by "start", but calling "CreateProcess" at its simplest in your own program starter seems to serve.
Compile sth. like;
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.
and then on PostBuild put:
"X:\...\starter.exe" "X:\...\program.exe" param1 param2