wait und fehlerbehandlung habe ich für das beispiel rausgenommen,
LastError = ERROR_DIRECTORY (267)
Der Verzeichnisname ist ungültig
Da du das nicht erwähnt hattest, war ich davon ausgegangen es fehlt.
Und anhand der Fehlermeldung würde man dann womöglich auf auch
lpCurrentDirectory kommen können.
Also
ShowMessage(ExtractFilePath(sExecutableFile));
, falls man sich die Funktionsweise von ExtractFilePath und deren Ergebnis nicht selber denken kann.
Lösungen:
* Anwendung und Parameter getrtennt an ExecuteAndWait übergeben
* oder selber Anwendung und Parameter trennen und übergeben.
PS: Es knallt auch wunderbar, wenn man z.B.
"c:\Program Files\Putty\plink.exe" -N -R 1234:localhost:1234 user@server.co
starten will. (durch ", selbst wenn man die : weglassen würde)