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 Status eines aufgerufenen Programms abfragen (https://www.delphipraxis.net/34052-status-eines-aufgerufenen-programms-abfragen.html)

Anthauri 16. Nov 2004 16:39


Status eines aufgerufenen Programms abfragen
 
Mahlzeit !

ich möchte aus meinem Delphi-Programm heraus ein anderes aufrufen (Exe-Datei über Shellexecute oder so).

Wenn ich das externe Programm in der Eingabeaufforderung einzeln per Befehlszeile aufrufe teilt es mir einen Status mit, bzw gibt eine Zeile zurück, wenn es fertig ist.

Kann ich aus Delphi heraus die Rückgabewerte abfragen und darauf reagieren?
Das Programm soll nämlic_ im Batch mehrfach hintereinander aufgerufen werden, aber immer erst dann, wenn es ferigt ist.

alcaeus 16. Nov 2004 16:51

Re: Status eines aufgerufenen Programms abfragen
 
Hi Anthauri,

wenn du die exe über ShellExecute aufrufst, erhälst du ein Handle als Rückgabewert:
Die OH schreibt:
If the function succeeds, the return value is the instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application.

Sobald du das Handle hast, kannst du auch abfragen ob es noch gültig ist (die Funktion weiß ich leider nicht :oops:). Sobald das Handle nicht mehr existiert kannst du die Anwendung nochmal starten usw.

Greetz
alcaeus

Mystic 16. Nov 2004 18:01

Re: Status eines aufgerufenen Programms abfragen
 
Vielleicht solange GetPriorityClass(handle) abfragen bis die Funktion 0 zurückgibt ( -> Prozess existiert nicht mehr).

Oder vielleicht WaitForSingleObject(handle, INFINITE)? Vielleicht klappt das ja...

Christian Seehase 16. Nov 2004 18:06

Re: Status eines aufgerufenen Programms abfragen
 
Moin Anthauri,

such' hier mal nach Hier im Forum suchenShellExecuteEx bzw. Hier im Forum suchenCreateProcess
Da solltest Du, u.a. in der Codelibrary, fündig werden.

@alcaeus:
Ich stelle mit Erschrecken fest, dass der bei D7 mitglieferte Auszug aus dem PSDK immer noch veraltet ist.
MSDN-Library durchsuchenShellExecute liefert kein Handle zurück.

alcaeus 16. Nov 2004 18:09

Re: Status eines aufgerufenen Programms abfragen
 
Zitat:

Zitat von Christian Seehase
@alcaeus:
Ich stelle mit Erschrecken fest, dass der bei D7 mitglieferte Auszug aus dem PSDK immer noch veraltet ist.
MSDN-Library durchsuchenShellExecute liefert kein Handle zurück.

Hmm, danke, ich überlege mir gerade ob ich nicht komplett auf meine geliebte OH verzichten sollte :roll:

Greetz
alcaeus

Christian Seehase 16. Nov 2004 18:10

Re: Status eines aufgerufenen Programms abfragen
 
Moin alcaeus,

solange es sich um die Delphi-Hilfe handelt, ist es ja kein Problem, erst wenn die Sachen dran sind, die sich mit der Windows API beschäftigen solltest Du auf das MSDN ausweichen, bzw. Dir mal das PSDK herunterladen.

Mystic 16. Nov 2004 18:13

Re: Status eines aufgerufenen Programms abfragen
 
Zitat:

Zitat von alcaeus
Hmm, danke, ich überlege mir gerade ob ich nicht komplett auf meine geliebte OH verzichten sollte :roll:

Vielleicht das Platform SDK installieren? Ich glaube das ist der richtige Ersatz für die Win32's Programmers Reference aus der OH. Oder irre ich mich?


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