AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Auf Starten/Beenden von anderen Programmen reagieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Starten/Beenden von anderen Programmen reagieren

Ein Thema von patti · begonnen am 19. Mai 2007 · letzter Beitrag vom 27. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#1

Auf Starten/Beenden von anderen Programmen reagieren

  Alt 19. Mai 2007, 11:15
Guten Morgen

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
P@Tti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 19. Mai 2007, 13:16
Hi,

eine Möglichkeit wäre mit einem globalen WH_SHELL Hook festzustellen, wenn andere Anwendungen beendet oder gestartet werden.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 19. Mai 2007, 13:16
Da wirst du wohl die entsprechenden API-Funktionen hooken müssen, wie Shllexecute, ShellexecuteEx, CreateProcess, NtCreateProcess, CreateProcessAsUser, ...

Was hast du denn vor?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 19. Mai 2007, 13:28
Danke erstmal für eure Antworten
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

P@Tti

[EDIT1: Hat vielleicht jemand noch eine andere Idee, wann ich aktualisieren könnte?]
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 19. Mai 2007, 18:25
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?
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 20. Mai 2007, 11:41
Ü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
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 20. Mai 2007, 13:55
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 20. Mai 2007, 14:19
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
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 22. Mai 2007, 13:23
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

P@Tti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Auf Starten/Beenden von anderen Programmen reagieren

  Alt 9. Jul 2007, 10:49
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:03 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