Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute(); (https://www.delphipraxis.net/95641-shellexecute-%3B.html)

passsy 10. Jul 2007 20:49


ShellExecute();
 
ich will eine *.bat ausführen das problem ist aber das ich keinen pfad eingeben kann da das programm auf meinem usb stick laufen soll und somit sich der laufwerksbuchstabe je nach dem ändert. die *.bat befindet sich allerdings in einem unterordner.

wie kann ich das den machen?

fLaSh11 10. Jul 2007 20:58

Re: ShellExecute();
 
Delphi-Quellcode:
ShellExecute(self.Handle,'open',PChar(ExtractFilePath(ParamStr(0))+'unterordner\xxx.bat'),nil,nil,0);
ExtractFilePath(ParamStr(0)) -> extrahiert den Pfad der Exe

//Edit: Siehe Slash-Einwand

scrat1979 10. Jul 2007 21:36

Re: ShellExecute();
 
Zitat:

Zitat von fLaSh11
Delphi-Quellcode:
ShellExecute(self.Handle,'open',PChar(ExtractFilePath(ParamStr(0))+'unterordner/xxx.bat'),nil,nil,0);
ExtractFilePath(ParamStr(0)) -> extrahiert den Pfad der Exe

Dazu 2 Fragen / Anregungen:

1. Müsste statt einem "/" nicht ein "\" stehen? Weiß nicht, ob es unter Win auch geht.... :gruebel:

2. IMHO wird kein abschließendes "\" nach ExtractFilePath eingefügt. Das müsste man dann entweder manuell machen (falls Programm in einem Unterorder ist) oder das ganze mittels IncludeTrailingPathDelimiter "automatisch" erledigen. Tip: Vor dem ausführen einfach mal die ganze Befehlszeile mittels ShowMessage anzeigen und ggf. noch etwas herumhantieren :-)

SCRaT

fLaSh11 10. Jul 2007 21:39

Re: ShellExecute();
 
"..." gibt das Arbeitsverzeichnis von Windows an, wenn mich nicht alles täuscht, d.h. es kann zu Fehlern führen, wenn man auch andere Applikationen ausführt?!

//Edit: Der Querbalken... haste recht^^

SirThornberry 10. Jul 2007 21:41

Re: ShellExecute();
 
die 3 punkte waren ein Platzhalter und es ging um den Backslash. Ob man Slash oder BackSlash verwendet ist in den mir bisher untergekommenen Fällen egal.
@scrat1979: Doch, ExtractFilePath lässt den abschließenden Backslash

mkinzler 10. Jul 2007 21:41

Re: ShellExecute();
 
Für das Arbeitsverzeichnis brauchst du gar nichts angeben. aber ich glaube er gat ... als Platzhalter verwendet.

fLaSh11 10. Jul 2007 21:45

Re: ShellExecute();
 
Recht haste... kann es aber sein, dass "...\" bei C++ ein bestimmtes Verzeichnis angibt? (Irgendwie ist da was in meinem Hinterstübchen :stupid: )

DeddyH 10. Jul 2007 21:47

Re: ShellExecute();
 
\ ist das Wurzelverzeichnis des Arbeitsverzeichnisses. In C/C++ wird dieses außerdem als Escape-Zeichen für Steuersequenzen benutzt. Das hat aber mit Pfadangaben nix zu tun.

passsy 11. Jul 2007 08:56

Re: ShellExecute();
 
echt super den pfad zeigts mir mit ner showmessage richtig an leider passiert mit der *.bat gar nix :(

ideen worans liegen könnte?


ok ma was anderes ich bin auch doof kann ich mir shellexecute nich auch gleich parameter rein machen?

die *.bat
Delphi-Quellcode:
TrueCrypt.exe /lz /q /a /c n /m rm /v pwgeschuetzerstick
action=Mount TrueCrypt Volume
daraus kann man doch n prog schreiben, oder?

DeddyH 11. Jul 2007 09:11

Re: ShellExecute();
 
Batch-Dateien kannst Du nicht direkt per ShellExecute ausführen, sondern nur über den Kommandointerpreter mit der Batch als Parameter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz