Crochets de fenêtre – Comment fonctionnent-ils?

Je n’ai aucune idée de la façon dont les crochets de fenêtre fonctionnent au niveau du système. MSDN ne touche que très brièvement ce qui se passe:

Un hook est un point du mécanisme de gestion des messages système où une application peut installer un sous-programme pour surveiller le trafic des messages dans le système et traiter certains types de messages avant qu’ils n’atteignent la procédure de la fenêtre cible.

Ma meilleure supposition est quelque chose comme ci-dessous:

entrer la description de l'image ici

Avant que chaque message ne soit ajouté à la queue des messages pour une fenêtre, il envoie d’abord le message aux hooks globaux / locaux, qui peuvent faire quelque chose, en fonction de leurs procédures de hook. Après tous les hooks globaux et les hooks locaux, le message est finalement ajouté à la queue des messages de la fenêtre.

Cependant, MSDN indique que pour certains types de hooks, il surveillera les events , les notifications etc.

Un exemple est le hook WH_MOUSE_LL :

Installe une procédure de raccordement qui surveille les événements d’entrée de la souris de bas niveau. Pour plus d’informations, consultez la procédure de hook LowLevelMouseProc.

Quand ils disent des events , parlons-nous des messages de fenêtre, ou est-ce qu’ils signifient autre chose?

Est-ce que je me trompe tous?

Oui, il s’agit d’un mécanisme pour les messages Windows, vous pouvez traiter ces données (messages) avant qu’elles n’atteignent la procédure de fenêtre cible (boucle de messages).

Si vous voulez connecter d’autres fenêtres de processus, vous pouvez simplement faire cela en DLL et utiliser l’injection de DLL pour injecter votre bibliothèque dans d’autres processus.