![]() |
Auf Starten/Beenden von anderen Programmen reagieren
Guten Morgen :wink:
Wie kann ich darauf in meinem Programm reagieren, wenn ein neues Programm gestartet wird oder eines beendet wird? Gibts dafür ne Windows-Message oder so? Ich möchte das nicht mit einem Timer immer überprüfen müssen :? Danke für die Antworten :wink: P@Tti |
Re: Auf Starten/Beenden von anderen Programmen reagieren
Hi,
eine Möglichkeit wäre mit einem globalen WH_SHELL Hook festzustellen, wenn andere Anwendungen beendet oder gestartet werden. |
Re: Auf Starten/Beenden von anderen Programmen reagieren
Da wirst du wohl die entsprechenden API-Funktionen hooken müssen, wie Shllexecute, ShellexecuteEx, CreateProcess, NtCreateProcess, CreateProcessAsUser, ...
Was hast du denn vor? |
Re: Auf Starten/Beenden von anderen Programmen reagieren
Danke erstmal für eure Antworten :thumb:
Ich programmiere gerade eine Schnellstartleiste, die mir auch anzeigt, ob die zugehörigen Programme zu den Icons, die sich auf der Leiste befinden, geöffnet sind. Das funktioniert bereits, allerdings suche ich noch nach der besten Möglichkeit, die Ansicht zu aktualisieren, wenn Programme gestartet oder beendet werden. Zum Test habe ich das im Paint-Ereignis der von mir erstellten Komponente gemacht, dann wird aber natürlich nur aktualisiert, wenn sie neu gezeichnet wird. Hoffe, ihr könnt verstehen, was ich vorhabe :wink: P@Tti [EDIT1: Hat vielleicht jemand noch eine andere Idee, wann ich aktualisieren könnte?] |
Re: Auf Starten/Beenden von anderen Programmen reagieren
Wenn die Programme über deine Schnellstartleiste geöffnet werden, wäre es natürlich einfach mit WaitForSingleObject() festzustellen wann sie wieder beendet werden.
Oder soll dein Programm auch mitbekommen wenn fremde Programme z.B. über den Explorer usw. gestartet werden? |
Re: Auf Starten/Beenden von anderen Programmen reagieren
Über meine eigene Leiste wäre es kein Problem, allerdings möchte ich auch auf jeden Fall darauf reagieren, wenn das Programm "außerhalb" der Leiste gestartet / beendet wird. Im Moment habe ich einen Timer ( :? ), der alle 500 ms überprüft, was gerade läuft.
P@Tti |
Re: Auf Starten/Beenden von anderen Programmen reagieren
|
Re: Auf Starten/Beenden von anderen Programmen reagieren
Danke für die Links, werde ich mir mal anschauen und dann entscheiden, ob ich das so mache oder doch über einen Timer :?
P@Tti |
Re: Auf Starten/Beenden von anderen Programmen reagieren
Hab mir die Demo mal angeschaut, aber das mit dem Hook ist mir für meine Schnellstartleiste zu komplex. Da werde ich wohl dann doch den Timer nehmen. Danke für die Hilfe :thumb:
P@Tti |
Re: Auf Starten/Beenden von anderen Programmen reagieren
Hi DP,
Ich habe mir mal die Demo angeschaut, und es auch unter Windows XP zum laufen gekriegt. Dummerweise sollte es aber mit Windows 2000 arbeiten (XP war nur zum Programmieren), aber wenn ich da den Hook starte passiert nichts... Oder funkt nur ein Programm dazwischen? Wenn ja, welche könnten das sein? [edit]Ist es ggf. auch möglich zu verhindern das so ein Dialog kommt, dass der Arbeitsspeicher nicht ausreicht?[/edit] MfG xZise PS: Eine Frage habe ich noch: Ist es irgendwie möglich die DLL "einzubinden"? Also sozusagen im Programmcode eines Dienstes/Services? PPS: Ich weiß... Wir haben Juli, aber warum extra einen neuen Thread aufmachen :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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