No tengo idea de cómo funcionan los ganchos de ventana al "nivel del sistema". MSDN sólo se toca lo que está pasando muy brevemente:Ganchos para ventanas: ¿cómo funcionan?
Un gancho es un punto en el mecanismo de tratamiento de mensajes de sistema en el que una aplicación puede instalar una subrutina para controlar el tráfico de mensajes en el sistema y procesar ciertos tipos de mensajes antes de que lleguen al procedimiento de ventana de destino .
Mi mejor conjetura es algo parecido a continuación:
Antes de añadir cada mensaje a la cola de mensajes para una ventana, que va a enviar primero el mensaje a los ganchos global/local, que puede hacer algo, dependiendo de sus procedimientos de enlace. Después de todos los enganches globales y ganchos locales, el mensaje finalmente se agrega a la cola de mensajes de la ventana.
Sin embargo, MSDN dice que para algunos de los tipos de ganchos, monitorizará events
, notifications
etc.
Un ejemplo es el WH_MOUSE_LL
gancho:
instala un procedimiento de enlace que monitorea baja nivel mouse eventos de entrada. Para obtener más información, vea el procedimiento de hook LowLevelMouseProc.
Cuando dicen events
, ¿estamos hablando de mensajes de ventana, o significan algo más?
¿Estoy completamente equivocado?
Puntos de estilo de bonificación para una imagen de un diagrama a mano alzada. – rkb
Aquí hay una pequeña explicación http://b.1asphost.com/mmbaig/Tutorials/Windows_Hooks.html –
Muchos ganchos se basan en mensajes. Pero no es el gancho del que hablas, en realidad lo desencadena un "evento". Se ejecuta solo * antes * Windows crea el mensaje y lo coloca en la cola de mensajes de la ventana que tiene el foco. Compare con WH_MOUSE, un gancho global que se ejecuta cuando una aplicación llama a Get/PeekMessage y está a punto de recuperar un mensaje del mouse desde la cola de mensajes. Por lo tanto, realmente se desencadena por un mensaje. –