Also hab' mir CreateProcess mal in der
OH angesehen. Dein erster Ansatz war richtig, nur die Paramerterübergabe falsch.
Bei mir war Parameterübergabe richtig, aber die Bedeutung AppName / CommandLine falsch gedeutet.
Hier nochmal:
Delphi-Quellcode:
function ExecAndWait2(const Filename, Param1, Param2: string; WindowState: word): boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: string;
begin
// Parameterliste
CmdLine := Filename +' "' + Param1 + '" "' + Param2 + '"';
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;
Result := CreateProcess(NIL, PChar(CmdLine), nil, nil, FALSE,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);
//Warten bis beendet
if Result then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;
Alles an CmdLine übergeben war also OK, Nur die " waren an der falschen Stelle gesetzt. Probier es bitte nochmal mit der Funktion oben.