Autor Beitrag
mw8fz
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 25.04.07 15:08 
Hallo,

ich habe nen Delphiprog erstellt, dass beim einlegen der CD direkt von der CD startet. In dem Programm sollen dann über Button weitere Programme von der CD gestartet werden. Das mache ich mit dem Befehl "ShellExecute".
Mein Problem: Der Laufwerksbuchstabe kann an jedem PC unterschiedlich sein. Wie kann ich dem Programm mitteilen, welchen Buchstaben das CD-Laufwerk hat??
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 25.04.07 15:14 
Verwend doch einfach stattdessen relative Pfade.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Mi 25.04.07 15:17 
Wenn dein Programm direkt von der CD starte, dann nimm
ausblenden Delphi-Quelltext
1:
ExtractFileDrive(Application.ExeName);					

bzw
ausblenden Delphi-Quelltext
1:
ExtractFileDir(Application.Exename);					

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
mw8fz Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 25.04.07 18:01 
Erstmal danke für die Antworten.

Ich habe den Code jetzt wie folgt zusammengesetzt, aber wenn man dann auf den Button klickt passiert gar nichts.
ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
ExtractFileDrive('Setup.exe');
end;


Wie muss ich den Befehl richtig zuammensetzen?
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Mi 25.04.07 18:54 
Warum habe ich wohl
ausblenden Delphi-Quelltext
1:
Application.ExeName					
geschrieben :x

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 25.04.07 21:00 
Wie man unschwer aus dem Namen des Befehls ExtractFileDrive erschließen kann, extrahiert er aus dem Parameter den Laufwerksbuchstaben und gibt diesen zurück. Der Rückgabewert ist also der Laufwerksbuchstabe.
Was also soll denn bitte schön ExtractFileDrive('setup.exe') bewirken?
Da ich grad gut drauf bin:
ausblenden Delphi-Quelltext
1:
ShellExecute(handle, PChar('open'), PChar('setup.exe'),PChar(''),PChar(ExtractFileDrive(Application.ExeName)),SW_SHOW);					

Alternativ könnte man natürlich auch gleich ExtractFilePath(Application.Exename)+'\setup.exe' in den dritten Parameter packen.

Aber wieso verwendest du nicht einfach relative Pfade? DAmit hättest du den ganzen Aufwand nicht. Wenn dein Programm etwa autostart.exe heißt und im Root-Verzeichnis der CD liegt, und du willst damit setup.exe ausführen, das z.B. im Unterverzeichnis test liegt, schreib doch einfach test\setup.exe. Absolute Pfade sind hier irgendwie unpraktisch.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
mw8fz Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 26.04.07 17:34 
Sorry, bin halt Anfänger in Delphi. Aber danke für die Kompetente Hilfe!