AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ShellExecute Laufwerk Problem

Ein Thema von kuba · begonnen am 24. Dez 2015 · letzter Beitrag vom 25. Dez 2015
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
552 Beiträge
 
Delphi XE7 Professional
 
#1

ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 15:17
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:

ShellExecute(handle, 'open', PChar(USBDrive.Drive+':\'+'usb.exe'), nil, PChar(USBDrive.Drive+':\'), SW_NORMAL);

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 15:33
Und wie lautet die Fehlermeldung? Was gibt die Eigenschaft Drive zurück?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
552 Beiträge
 
Delphi XE7 Professional
 
#3

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 15:53
Und wie lautet die Fehlermeldung? Was gibt die Eigenschaft Drive zurück?
Wie kann ich das herausfinden ? Ich sehe nur "Programm startet und tut was es soll" bzw. "Programm startet und tut nicht was es soll".

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 16:07
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:
...
  ChDir(ExtractFilePath(Application.ExeName));
... oder
  ChDir(ExtractFileDrive(Application.ExeName));
...
Im ersten Fall ist dann das aktuelle Verzeichnis des Programmes das Verzeichnis, in welchem sich die Exe befindet.

Im zweiten Fall ist das aktuelle Verzeichnis das Root-Laufwerk des USB-Sticks, auf dem sich die Exe befindet.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.830 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 16:44
Und wie lautet die Fehlermeldung? Was gibt die Eigenschaft Drive zurück?
Wie kann ich das herausfinden ? Ich sehe nur "Programm startet und tut was es soll" bzw. "Programm startet und tut nicht was es soll".

kuba
Windowsfunktionen lefern einen Statuscode zurück, aus dem man den Erfolg oder Fehlergrund ablesen kann.

https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
552 Beiträge
 
Delphi XE7 Professional
 
#6

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 16:47
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:
...
  ChDir(ExtractFilePath(Application.ExeName));
... oder
  ChDir(ExtractFileDrive(Application.ExeName));
...
Im ersten Fall ist dann das aktuelle Verzeichnis des Programmes das Verzeichnis, in welchem sich die Exe befindet.

Im zweiten Fall ist das aktuelle Verzeichnis das Root-Laufwerk des USB-Sticks, auf dem sich die Exe befindet.

Danke für den Tip, mit Nr. 2 funktioniert es
Beim ShellExecute muss das Arbeitsverzeichnis durch "nil" ersetzt werden:

ShellExecute(handle, 'open', PChar(USBDrive.Drive+':\'+'usb.exe'), nil, nil, SW_NORMAL);

OnCreate der zu startenden Anwendung:

ChDir(ExtractFileDrive(Application.ExeName)); Super !!

kuba
Stefan Kubatzki
E=mc2

Geändert von kuba (24. Dez 2015 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
552 Beiträge
 
Delphi XE7 Professional
 
#7

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 16:49
Und wie lautet die Fehlermeldung? Was gibt die Eigenschaft Drive zurück?
Wie kann ich das herausfinden ? Ich sehe nur "Programm startet und tut was es soll" bzw. "Programm startet und tut nicht was es soll".

kuba
Windowsfunktionen lefern einen Statuscode zurück, aus dem man den Erfolg oder Fehlergrund ablesen kann.

https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Danke, ein Beispiel habe ich in der Delphi-Praxis gefunden. Kommt aber keine Fehlermeldung zurück, weil das Programm einwandfrei gestartet wird, nur eben vom verkehrten Laufwerk.

kuba
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.459 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 17:47
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TBx
(Moderator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.806 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 22:55
Wenn Du auf absolute Pfade umstellst, würde sich die Problematik in dem Fall in Luft auflösen.
Das wage ich zu bezweifeln, da das Programm ja auf einem USB-Stick liegt. Bei diesem ist keineswegs sichergestellt, dass er immer und überall den selben Laufwerksbuchstaben erhält.
  Mit Zitat antworten Zitat
Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
552 Beiträge
 
Delphi XE7 Professional
 
#10

AW: ShellExecute Laufwerk Problem

  Alt 24. Dez 2015, 23:22
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
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf