Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auf Starten/Beenden von anderen Programmen reagieren (https://www.delphipraxis.net/92405-auf-starten-beenden-von-anderen-programmen-reagieren.html)

patti 19. Mai 2007 10:15


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

bitsetter 19. Mai 2007 12:16

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.

Luckie 19. Mai 2007 12:16

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?

patti 19. Mai 2007 12:28

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?]

bitsetter 19. Mai 2007 17:25

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?

patti 20. Mai 2007 10:41

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

bitsetter 20. Mai 2007 12:55

Re: Auf Starten/Beenden von anderen Programmen reagieren
 
Hi,

falls du dir die Arbeit mit einem Hook machen möchtest, dann kannst du dir die Demo von toms auf Luckie seiner Homepage genauer mal ansehen. Dann haste schon ein Beispiel für ShellExecute und CreateProcess.

patti 20. Mai 2007 13:19

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

patti 22. Mai 2007 12:23

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

xZise 9. Jul 2007 09:49

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.
Seite 1 von 2  1 2      

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