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 Hilfe: ShellExecute und warten? (https://www.delphipraxis.net/16636-hilfe-shellexecute-und-warten.html)

Acien 20. Feb 2004 14:59


Hilfe: ShellExecute und warten?
 
Hallo,

Ich möchte einen anderen Prozess mit Delphi starten, und habe bis jetzt ShellExecute benutzt. Ich habe auch den Verzeichnis angegeben als Parameter, wo die andere Dateien liegen, die benötigt sind, um den anderen Prozess zu starten.

ShellExecute(Application.Handle,'open',pChar(sFileName),nil,pChar(sExePath),sw_normal);

Damit habe ich geschafft, das Programm(sFilename) zu starten. Und dann möchte ich eine Schleife machen, damit einen weiteren Prozess gestartet wird, allerdings nach dem ersten Prozess beendet ist.
Ich komme jetzt zu einer Sackgasse.

Create Process und andere Funktionen in diesem Forum habe ich benutzt. Das Problem ist : Mit den Funktionen startet mein Program nicht mehr richtig. Das Programm wird gestartet, kann aber nicht mehr die andere benötigten Dateien finden (die sind zwar in dem selben Verzeichnis). Bsp. help.exe braucht a.dat, b.dat, usw. Help gestartet, aber nicht richtig funktioniert, weil a,b.dat nicht gefunden werden.

Gibt es eigentlich eine Methode, wie man die Verzeichnisse irgendwie einbinden? Oder mit einem anderen Weg, ich benutze trotzdem ShellExecute und noch eine (?) Funktion, die überprüft, wartet so lange bis das Programm beendet ist?

Auf Tips freue ich mich sehr... Danke

Gruss
Felix

MathiasSimmack 20. Feb 2004 15:47

Re: Hilfe: ShellExecute und warten?
 
Das Problem dürfte wahrscheinlich in deinem Programm liegen. Wäre es denkbar, dass du den Pfad zu den Dateien gar nicht bzw. fehlerhaft mit GetCurrentDir abfragst? In dem Fall benutzt du das Arbeitsverzeichnis, das nicht zwangsläufig mit deinem Programmordner identisch sein muss.

Bei ShellExecute kannst du das Problem beseitigen, weil du das Arbeitsverzeichnis als Parameter angeben kannst. Bei RunProcess (ich nehme an, du hast die Funktion von Luckie gefunden und probiert) geht das nicht.

Entweder setzt du also das Arbeitsverzeichnis vor dem Aufruf des Programms (SetCurrentDir), oder du änderst eben das zu startende Programm ab, dass es den Pfad zu den notwendigen Dateien korrekt mit
Delphi-Quellcode:
ExtractFilePath(paramstr(0))
ermittelt, wenn sich diese im Programmordner befinden.

Assarbad 20. Feb 2004 16:11

Re: Hilfe: ShellExecute und warten?
 
Schau mal hier:

http://assarbad.net/stuff/shellapiex.pas

Funktioniert exakt wie ShellExecute, nur daß man optional auch warten kann. Ist auch in der Codebase. Ich versteh sowieso nicht, warum immer CreateProcess() angepriesen wird, wo das doch einen ganz anderen Hintergrund hat :-/


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 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