Home » Tutorials » Systemnahe Programmierung » Mouse- und Tastatur-Hooks

Mouse- und Tastatur-Hooks

Wozu Hooks?

Ganz einfach: Hooks (engl. für Haken) machen eigentlich nur global wirklich Sinn oder dort, wo die Funktionalität durch den Rest der API nicht abgedeckt wird. Zum Beispiel ist es kein Problem, mit Mouse-Capturing auch Mouseereignisse über fremden Fenstern abzufangen. Nur bekommen eben diese Fenster dann keine Messages!!!
An dieser Stelle setzen Hooks an. Sie ermöglichen es, Messages abzufangen, bevor sie an ein Fenster gesendet werden. Dabei kann ein Prozess allein den Hook setzen (lokal), und damit ist der Hook auch nur für diesen Prozess (lt. Doku sogar nur Thread) gültig. Ein globaler Hook muss, wie so ziemlich alles, was global (innerhalb aller Prozesse) laufen soll, in einer DLL invoziert werden. Dabei ist es nur nötig, die eigentliche Hook-Procedure in die DLL auszulagern und deren Adresse an SetWindowsHookEx() zu übergeben. Es ist allerdings state-of-art, in der DLL eine Installations- und Deinstallationsroutine für den Hook zu exportieren. Dies erleichtert den Umgang und ermöglicht zum Beispiel, das Entladen der DLL wegzulassen …