![]() |
Prozessbeendigung hooken
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.
|
Re: Prozessbeendigung hooken
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 :cyclops: Liebe Grüsse |
Re: Prozessbeendigung hooken
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). |
Re: Prozessbeendigung hooken
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? :?).
|
Re: Prozessbeendigung hooken
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! :firejump: Liebe Grüsse |
Re: Prozessbeendigung hooken
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 ( ![]() |
Re: Prozessbeendigung hooken
Ein WH_SHELL Hook eignet sich zumindest um sich korrekt beendigende Programme zu erfassen. Ob es auch fuer abgeschossene Programme geht weiss ich nicht.
|
Re: Prozessbeendigung hooken
Ich glaube, daß es zumindest auf Win32-Prozesse (csrss) beschränkt ist (WH_SHELL).
|
Re: Prozessbeendigung hooken
Ich glaube, ich kehre zum Polling zurück... diese Methode bereit zu viele Probleme. :(
|
Re: Prozessbeendigung hooken
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 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