Eigentlich steckt in
GetCommandLine folgendes drin
EXEPath Param1 Param2 ...
,
wobei in EXEPath der eigentlich aufgerufene Pfad der ausgeführten EXE drinsteht.
(ruft man z.B. nur "MeinProgramm" über CMD auf, dann steht auch nur das dort drin)
ParamStr(0) ignoriert deshalb diesen Wert und gibt stattdessen
GetModuleFileName(0) zurück.
Zitat von
MSDN: CreateProcess:
__in_opt LPCTSTR lpApplicationName,
__inout_opt LPTSTR lpCommandLine
Du mußt also noch einen wert mehr angeben
Also entweder einen "Dummywert" oder besser nochmals den EXEPath (Delphi-Programme stört es zwar nicht, aber andere Programme vielleicht doch) .
Probier es einfach mal
ShowMessage(GetCommandLine);
.
Quasi in etwa so:
Delphi-Quellcode:
Params := 'Halli hallo wie gehts denn so?';
Result := CreateProcess(PChar(Programm), PChar('"' + Programm + '" ' + Params), nil, nil, true,
CREATE_DEFAULT_ERROR_MODE, nil, PChar(ExtractFileDir(Programm)), StartupInfo, ProcessInfo);