![]() |
Auf beenden eines Programms reagieren
Hallo,
ich habe ein Programm geschrieben und wollte jetzt mal nachfragen ob es möglich ist, darauf zu reagieren wenn ein externes Programm beendet wird. Also ich habe mein Programm minimiert und wenn sagen wir mal der internetexplorer beendet wird soll sich mein Programm maximieren. |
Re: Auf beenden eines Programms reagieren
Hallo,
wenn Du externe Programme überwachen willst, dann musst Du ja auf alle Fälle auch ihre Handels kennen. Und wenn Du die schon weißt, dann wäre es wohl das einfachste, z.B. alle 0,5sec mittels der FindWindow-Funktion auch mal nachzufragen, ob sie denn überhaupt noch existieren. Bezüglich der CPU-Belastung dürfte das jedenfalls völlig vernachlässigbar sein. Eine andere Möglichkeit wäre event. noch per CBTProc (siehe PSDK) nach irgendwelchen Windows Ausschau zu halten, die gerade zerstört werden. Oder Du versuchst dafür einen globalen Hook einzusetzen, was aber wohl die aufwändigste Lösung wäre. |
Re: Auf beenden eines Programms reagieren
Kann ich denn vielleicht irgendwie mit fdem task manager überprüfen ob die datei beendet wurde. Der muss ja nur überprüfen ob die anwendung an ist.
|
Re: Auf beenden eines Programms reagieren
Warum so umständlich? Einfach gucken, ob der gesuchte Prozess noch in der Prozessliste auftaucht. Wie man Prozesse auflistet, dürfte hier im Forum oder mit Google zu finden sein.
|
Re: Auf beenden eines Programms reagieren
@XXcD
Nein, den Taskmanager kann man eigentlich nicht durch ein eigenes Programm dementsprechend befragen (wenigstens nicht das ich wüßte). Übrigens habe ich oben ein winziges bisschen Unsinn erzählt *ggg*: Die Handle des jeweils zu überwachenden Progs musst Du natürlich für diese Prüfung nicht kennen. Vielmehr wirst Du sie im positiven Fall (dh. wenn das Programm noch läuft) dann von dieser FindWindow-Funktion geliefert bekommen! Bekommst Du stattdessen nur eine 0 (Null) geliefert, dann läuft das Programm eben nicht mehr. Um diese FindWindow-Funktion nutzen zu können, musst Du dann aber zuerst noch den KlassenNamen und/oder den WindowNamen des jeweiligen Programmes wissen. Letzteres steht für gewöhnlich schon in der Title-Leiste des Windows und für den ClassName sollte man sich am Besten so ein Programm wie SPY++ zulegen. Das ist kostenlos und kann z.B. ![]() Wenn Du diese Informationen hast (ClassName und/oder WindowName), dann brauchst Du eigentlich nur noch mehr einen Timer und eine einzige weitere Anweisung, um die von dir gewünschte Information abfragen zu können:
Delphi-Quellcode:
If FindWindow('theWindowClassName','theWindowName') <> 0 then WindowStillExists...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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