Hoi,
Ik ben er zelf al zoveel maal tegenaan gelopen dat ik dit wil meegeven als tip:
Hoe commands (voor bv "shellexecute", "createprocess", "CaptureConsoleOutput", enz...) samenstellen.
Veronderstel dat je de volgende soort command wil meegeven aan een de bovenstaande functies: 'PathAndExeFileNaam Parameter1 Parameter2', bv 'C:\MyProgs\Prog1.exe x.txt y.txt'.
Dit werkt goed omdat zowel in het path van het uit te voeren programma en ook in de parameters geen spaties zitten.
Iets anders wordt het bv als het uit te voeren programma bv
'C:\Program Files\Prog1.exe Parameter 1 Parameter 2' zou zijn (zowel de pathnaam van de exefile als de parameters spaties bevatten spaties).
Windows kan daar niet mee om (het veronderstelt dat na een spatie een nieuwe parameter begint).
De oplossing is simpel: zet dubbele quotes rond de naam (path + naam) van het uit te voeren programma en rond iedere parameter.
Bovenstaand voorbeeld wordt dus:
of, als je alles in variabelen hebt (path, exefile, parameters):Code:'"C:\Program Files\Prog1.exe" "Parameter 1" "Parameter2"'
Dus: als de volgende keer "shellexecute", "createprocess", "CaptureConsoleOutput", enz... niet het gevraagde uitvoert: check bovenstaande even...Code:Path := 'C:\Program Files\\'; Exefile := 'Prog1.exe'; Parameter1 := 'Dit is een tekstfile.txt'; Parameter2 := 'Dit is een andere tekstfile.txt'; S := '"' + Path + Exefile + '" "' + Parameter1 + '" "' + Parameter2 + '"'; DiffOutput := CaptureConsoleOutput(S);
Veel plezier.
Bookmarks