Delphi-PRAXiS

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/95661-shellexecute.html)

mlspider 11. Jul 2007 06:12


ShellExecute
 
Um ein anderes Programm asynchron zu starten nutze ich ShellExecute.

Delphi-Quellcode:
Application.Terminate;
 ShellExecute(Application.Handle, 'open' ,PChar(ExtractFilePath(ParamStr(0))+'irgend eine Datei.exe'), nil, nil, sw_ShowNormal);
Leider mußte ich des öfteren beobachten, daß hin und wieder das angesprochene Programm nicht gestartet wird. Woran könnte das nun wieder liegen?

Im selben Atemzug hätte ich gern in Erfahrung gebracht, ob ich das laufende Programm vor oder nach ShellExecute mit Application.Terminate beenden sollte.

Jelly 11. Jul 2007 06:39

Re: ShellExecute
 
Das ShellExecute sollte so klappen. Probier höchstens mal noch, ob der Pfad auch wirklich mit einem \ endet, also einfach den 3. Parameter so übergeben:
Delphi-Quellcode:
PChar(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)))+'irgend eine Datei.exe')
Deine 2. Frage sollte aber selbst beantwortet werden, denk ich, denn was meinst du wohl, was nach einem application.terminate passiert :wink: ... Nämlich

mlspider 11. Jul 2007 06:44

Re: ShellExecute
 
Bezüglich meiner 2. Frage bin ich mir allerdings nicht so sicher, da beide Methoden funktionieren.

Matze 11. Jul 2007 06:49

Re: ShellExecute
 
Um den abschließenden Backslash brauchst du dich nicht zu kümmern, denn Delphi-Referenz durchsuchenExtractFilePath sorgt dafür, dass dieser enthalten ist. Auszug aus der OH:

Zitat:

Der resultierende String enthält die Zeichen von FileName bis einschließlich des Doppelpunkts oder des umgekehrten Schrägstrichs, mit dem die Pfadinformationen vom Dateinamen und seinere Erweiterung abgetrennt wird. Sind in FileName keine Laufwerks- und Verzeichnisinformationen vorhanden, wird ein leerer String zurückgegeben.
Ich sehe an deinem Aufruf auch keinen Fehler.

mlspider 11. Jul 2007 06:53

Re: ShellExecute
 
Scheint offenbar ein seltsames Phänomen zu sein. Ich vermute einfach mal, das ich nicht genügend Speicher zur Verfügung stellen kann. Es laufen bei mir sehr viele Prozesse parallel.

Matze 11. Jul 2007 06:56

Re: ShellExecute
 
Ich hatte auch mal ein seltsames Problem und konnte es dann mit dieser Funktion lösen. Vielleicht hilft diese dir weiter.

mlspider 11. Jul 2007 07:01

Re: ShellExecute
 
Tja, das wäre die elegantere Methode. Danke.

Luckie 11. Jul 2007 08:43

Re: ShellExecute
 
ShellExecute hat auch einen Rückgabewert, den man mal abfragen könnte. :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr.

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