Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#5

AW: Executeandwait nimmt keinen Doppelpunkt als Parameter

  Alt 2. Mai 2017, 12:06
Was kommt dabei heraus, wenn Du hieraus 'c:\plink.exe -N -R 1234:localhost:1234 user@server.com -P 22' ExtractFilePath machst?

Du übergibts der Funktion keinen gültigen Dateinamen, wie soll sie da ein vernünftiges Ergebnis liefern. Sie muss an den Doppelpunkten scheitern.

Ändere Deine Funktion bitte ab, ungefähr sowas:
Delphi-Quellcode:
Function ExecuteAndWait(sExecutableFile : String; sParameter : String; wWindowState : Word = SW_SHOWNORMAL) : Boolean;
var
siInfo : TStartUpInfo;
piInfo : TProcessInformation;
begin
    FillChar(siInfo, SizeOf(siInfo), #0);
    with siInfo do begin
    cb := SizeOf(siInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := wWindowState;
    end;
    Result := CreateProcess(NIL, pChar(sExecutableFile + ' ' + sParameter), NIL, NIL, FALSE, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL, pchar(ExtractFilePath(sExecutableFile)),siInfo, piInfo);
end;
Aufruf ungefähr so:
Delphi-Quellcode:
if ExecuteAndWait('c:\plink.exe', '-N -R 1234:localhost:1234 user@server.com -P 22',SW_SHOWNORMAL) then begin
  // irgendwas;
end else begin
  // irgendwas anderes;
end;
  Mit Zitat antworten Zitat