![]() |
ShellExecute Laufwerk Problem
Hallo,
ich habe eine Anwendung geschrieben, die sich nur von einem bestimmten USB Stick starten lässt. Das Programm soll von einer anderen Anwendung, die sich auf Laufwerk C: befindet, gestartet werden. Wenn ich das Programm per Mausklick vom USB-Stick starte funktioniert alles einwandfrei, wenn ich das Programm jedoch von meiner Anwendung auf Laufwerk C: starte funktioniert es nicht. Testweise habe ich das Programm von der Eingabeaufforderung gestartet. Wenn das Prompt auf Laufwerk C: ist funktioniert es nicht. Sobald ich auf das USB Laufwerk wechsle und das Programm starte funktioniert es. Wie kann ich erreichen, daß meine Anwendung vom richtigen Laufwerk gestartet wird ? Mein Programmaufruf sieht so aus:
Delphi-Quellcode:
ShellExecute(handle, 'open', PChar(USBDrive.Drive+':\'+'usb.exe'), nil, PChar(USBDrive.Drive+':\'), SW_NORMAL);
KUBA |
AW: ShellExecute Laufwerk Problem
Und wie lautet die Fehlermeldung? Was gibt die Eigenschaft Drive zurück?
|
AW: ShellExecute Laufwerk Problem
Zitat:
kuba |
AW: ShellExecute Laufwerk Problem
Mir ist nicht ganz klar, was Du möchtest.
Soll das Arbeitsverzeichnis des Programmes das Laufwerk des USB-Sticks sein? Dann eventuell im Programm (FormCreate oder so) dashier ausprobieren:
Delphi-Quellcode:
Im ersten Fall ist dann das aktuelle Verzeichnis des Programmes das Verzeichnis, in welchem sich die Exe befindet.
...
ChDir(ExtractFilePath(Application.ExeName)); ... oder ChDir(ExtractFileDrive(Application.ExeName)); ... Im zweiten Fall ist das aktuelle Verzeichnis das Root-Laufwerk des USB-Sticks, auf dem sich die Exe befindet. |
AW: ShellExecute Laufwerk Problem
Zitat:
![]() |
AW: ShellExecute Laufwerk Problem
Zitat:
Danke für den Tip, mit Nr. 2 funktioniert es :) Beim ShellExecute muss das Arbeitsverzeichnis durch "nil" ersetzt werden:
Delphi-Quellcode:
ShellExecute(handle, 'open', PChar(USBDrive.Drive+':\'+'usb.exe'), nil, nil, SW_NORMAL);
OnCreate der zu startenden Anwendung:
Delphi-Quellcode:
Super !!
ChDir(ExtractFileDrive(Application.ExeName));
kuba |
AW: ShellExecute Laufwerk Problem
Zitat:
Danke, ein ![]() kuba |
AW: ShellExecute Laufwerk Problem
Das Problem deutet darauf hin, dass das zu startende Programm mit relativen Pfaden arbeitet und es deshalb auf das Arbeitsverzeichnis ankommt. Wenn Du auf absolute Pfade umstellst, würde sich die Problematik in dem Fall in Luft auflösen.
|
AW: ShellExecute Laufwerk Problem
Zitat:
|
AW: ShellExecute Laufwerk Problem
Jedenfalls konnte ich mein Problem durch "ChDir(ExtractFileDrive(Application.ExeName)); " erfolgreich lösen.
Da wäre ich selbst nicht drauf gekommen. Ohne Hilfe hätte ich noch tagelang gegrübelt und herumgetrixt, vielen Dank !! kuba |
AW: ShellExecute Laufwerk Problem
Zitat:
![]() |
AW: ShellExecute Laufwerk Problem
Exakt, mit ParamStr(0) bekomme ich ja das eigene Verzeichnis heraus, egal, wo gerade das aktuelle Arbeitsverzeichnis steht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz