![]() |
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? |
Re: ShellExecute();
Delphi-Quellcode:
ExtractFilePath(ParamStr(0)) -> extrahiert den Pfad der Exe
ShellExecute(self.Handle,'open',PChar(ExtractFilePath(ParamStr(0))+'unterordner\xxx.bat'),nil,nil,0);
//Edit: Siehe Slash-Einwand |
Re: ShellExecute();
Zitat:
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 |
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^^ |
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 |
Re: ShellExecute();
Für das Arbeitsverzeichnis brauchst du gar nichts angeben. aber ich glaube er gat ... als Platzhalter verwendet.
|
Re: ShellExecute();
Recht haste... kann es aber sein, dass "...\" bei C++ ein bestimmtes Verzeichnis angibt? (Irgendwie ist da was in meinem Hinterstübchen :stupid: )
|
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.
|
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:
daraus kann man doch n prog schreiben, oder?
TrueCrypt.exe /lz /q /a /c n /m rm /v pwgeschuetzerstick
action=Mount TrueCrypt Volume |
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 11:20 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-2025 by Thomas Breitkreuz