AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozessbeendigung hooken

Ein Thema von Mystic · begonnen am 9. Mai 2006 · letzter Beitrag vom 13. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#1

Prozessbeendigung hooken

  Alt 9. Mai 2006, 14:39
Gibt es eine Funktion, die immer dann ausgeführt wird, wenn ein Prozess beendet wird? Unabhängig davon, ob der Prozess sauber beendet oder terminiert wird.
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Laufi

Registriert seit: 21. Mär 2006
86 Beiträge
 
#2

Re: Prozessbeendigung hooken

  Alt 10. Mai 2006, 13:45
Hallo

Ein Event gibt es nicht aber du kannst mit WaitForMultipleObjects warten bis der Prozess beendet ist. Wenn du lust hast, kannst du dafür auch einen Treat machen, das ist dann fast so wie ein Event

Liebe Grüsse
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#3

Re: Prozessbeendigung hooken

  Alt 10. Mai 2006, 18:07
Für Laufi's Variante brauchst du erstmal das Prozeßhandle mit korrekten Zugriffsrechten. Danach kannst du tatsächlich dieses Handle an WaitForSingleObject oder (zB s.o.) eine andere Wait-Funktion übergeben und auf die Beendigung warten.

Allerdings gibt es keine Möglichkeit dies für beliebige Prozesse (deren Handle du dann z.B. nicht hast) zu machen. Es gibt allerdings im Kernelmode eine Variante, die ich bei Interesse gern näher beschreibe (ab Windows 2000).
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Prozessbeendigung hooken

  Alt 10. Mai 2006, 23:48
OK, danke. Das Handle zu kriegen ist kein Problem. Allerdings müsste ich über die Beendigung benachrichtigt werden und nicht darauf warten (oder soll ich für jeden Zielprozess einen Thread öffnen? ).
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Laufi

Registriert seit: 21. Mär 2006
86 Beiträge
 
#5

Re: Prozessbeendigung hooken

  Alt 11. Mai 2006, 00:33
Hallo

Nein ein Tread reicht wenn du WaitForMultipleObjects nimmst... Dort kannst Du alle Prozesshandles übergeben und wartest bis ein Prozess beendet ist dann kannst du einen schönen event auslösen und mit demselben Tread weiterwarten bis der nächste Prozess beendet ist und so weiter... Du kannst also das in einer Schleife machen!

Liebe Grüsse
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Prozessbeendigung hooken

  Alt 11. Mai 2006, 12:44
Genau, mache es wie Laufi sagt.

In deinem Thread kannst du dann entweder ein Event auslösen oder z.B. eine Fensternachricht an deinen Hauptthread posten (MSDN-Library durchsuchenPostMessage) und dort gleich die PID oder welches (numerische!) Attribut auch immer direkt an den Hauptthread weitergeben. So bist du threadsafe ohne viele Probleme.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Prozessbeendigung hooken

  Alt 11. Mai 2006, 12:49
Ein WH_SHELL Hook eignet sich zumindest um sich korrekt beendigende Programme zu erfassen. Ob es auch fuer abgeschossene Programme geht weiss ich nicht.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: Prozessbeendigung hooken

  Alt 11. Mai 2006, 12:58
Ich glaube, daß es zumindest auf Win32-Prozesse (csrss) beschränkt ist (WH_SHELL).
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Prozessbeendigung hooken

  Alt 12. Mai 2006, 22:51
Ich glaube, ich kehre zum Polling zurück... diese Methode bereit zu viele Probleme.
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Prozessbeendigung hooken

  Alt 13. Mai 2006, 00:30
Wenn es ab Windows 2000 reicht, gibt es eine recht einfache Methode es in einem Treiber zu implementieren. Wenn du willst, kann ich mal übers Wochenende gucken, ob ich was zusammenhacken kann.
  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 20:20 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