Entwickler-Ecke

Windows API - Leerzeichen im Pfad verhindert Ausführung


kandesbunzler - Do 20.11.08 17:52
Titel: Leerzeichen im Pfad verhindert Ausführung
Hallo allerseits,

wenn ich folgende ausführe, wird das aufgerufene Programm nicht ausgeführt (DOS-Box Fehlermeldung: "Windows cannot find c:\Prog\Projects\Listview. Make sure ...):

Delphi-Quelltext
1:
2:
3:
4:
5:
...
Kommando_01 := 'cmd.exe';
Kommando_02 := '/c start c:\Prog\Projects\Listview Test\Project1.exe';
shellexecute (handle, 'open', PCHAR (Kommando_01), PCHAR (Kommando_02), nil, Sw_Show); 
...

Im zweiten Fall jedoch funktioniert es problemlos:

Delphi-Quelltext
1:
2:
3:
4:
5:
...
Kommando_01 := 'cmd.exe';
Kommando_02 := '/c start c:\Prog\Projects\Test\Project1.exe';
shellexecute (handle, 'open', PCHAR (Kommando_01), PCHAR (Kommando_02), nil, Sw_Show); 
...

Ergo: Der Pfad wird nur bis zum ersten Leerzeichen ausgewertet und dann abgebrochen. Wie wird der gesamte Pfad übergeben?


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 20.11.2008 um 20:03


Dunkel - Do 20.11.08 18:04
Titel: Re: Leerzeichen im Pfad verhindert Ausführung

Delphi-Quelltext
1:
2:
3:
4:
5:
...
Kommando_01 := 'cmd.exe';
Kommando_02 := '/c start "c:\Prog\Projects\Listview Test\Project1.exe"';
shellexecute (handle, 'open', PCHAR (Kommando_01), PCHAR (Kommando_02), nil, Sw_Show); 
...


kandesbunzler - Do 20.11.08 18:53

Nope - es öffnet sich nur die DOS-Box.

Ein Gegencheck mit


Delphi-Quelltext
1:
2:
3:
...
Kommando_02 := '/c start c:\Prog\Projects\Listview<span style="color: red">_</span>Test\Project1.exe';
...


funkioniert problemlos.


alzaimar - Do 20.11.08 20:03

ohne 'start' aber mit Fänsegüßchen? (Endlich mal ein "Kandesbunzler", hab ich ewig drauf gewartet)