Abfangen von WM_Close und reagieren in einer Callbackfunktion mit DLL

Chrissinger

Grünschnabel
Hallo,

Ich habe folgende Aufgabe. Ich muss mir von einem Fenster den Handle holen, dann einen Hook Installieren, der die WM_Close Message von diesem Fenster abhört, und dann darauf mit einer Callbackfunktion reagieren.

Ich habe versucht mich seit 2 Tagen in das Thema Hook`s einzulesen, habe aber leider die Theorie noch nicht wirklich in die Praxis umsetzen können. Es wäre toll wenn jemand ein Beispiel dazu hätte. Vielleicht wie man das alles in eine DLL packt, oder wie man den Handle des Fensters ermittelt und den richtigen Hook installiert.

Für Hilfe wäre ich euch sehr Dankbar

MFG

Chrissinger ;)
 
Ich kann dir nicht wirklich helfen - ich hab so etwas noch nicht gemacht. Aber du musst erst einmal in den Prozess des Programms kommen, dann musst du die Callback-Funktion für das Fenster herausfinden und auf deinen Wert umbiegen. Nicht vergessen darst du, dass du für alle anderen Nachrichten als WM_Close die Original-Funktion wieder aufrufen musst.

Schau auch mal hier - da könnte etwas für dich dabei sein:
http://bib.universitas-virtualis.org/go.php?node=34
 
Zuletzt bearbeitet:
Mit dieser Funktion bekommst du das Handle:

FindWindow()

Damit kommst du an die WndClass Struktur:

GetClassInfo

Die Definition davon ist hier:

WndClass

Mit SetWindowLong müsstest du dann die WndProc umsetzten können:

SetWindowLong

So - damit solltest du genug zum Probieren haben. Viel Spass & Erfolg.
 
Zuletzt bearbeitet:
Danke mal für die schnelle Hilfe,
ich werde dazu noch etwas Zeit brauchen denke ich. Aber damit lässt sich schon mal was Anfangen

MFG

CHrissigner
;-)
 
Haut das überhaupt hin mit dem SetWindowLong? Schließlich operieren ja beide Programme in einem eigenen virtuellen Speicherbereich, die Adressen stimmen ja nicht überein?
 
Siehe mein erster Post - man muss mittels Debug-API sich in den selben Prozess einhängen - sonst kann es nicht funktionieren, da beide ja in unterschiedlichen Speicherbereichen sind.
 
Zurück