2011-12-26 47 views
9

我不知道窗口钩子是如何在“系统级”工作的。 MSDN只触及了什么事情很简单:窗钩 - 它们是如何工作的?

钩子是系统消息处理机制的一个点,其中一个 应用程序可以安装一个子程序来监视邮件流量 的系统和过程中的某些类型的消息然后才能到达目标窗口过程 。

我最好的猜测是类似下面的东西:每个消息被添加到消息队列的窗口

enter image description here

之前,会先发送邮件到全局/局部钩子,这可能会做些什么,取决于他们的钩子程序。在所有全局钩子和本地钩子之后,消息最终被添加到窗口消息队列中。

然而,MSDN说,对于一些类型的钩子的,它将监视eventsnotifications

一个例子是WH_MOUSE_LL钩:

安装,监视低一个钩子程序级别鼠标 输入事件。有关更多信息,请参阅LowLevelMouseProc钩子 过程。

当他们说events,我们在说窗口消息,还是他们的意思是别的?

我都错了吗?

+8

奖励风格点为手绘图的图像。 – rkb 2011-12-26 00:13:48

+1

这里是一个小解释http://b.1asphost.com/mmbaig/Tutorials/Windows_Hooks.html – 2011-12-26 00:47:06

+2

许多挂钩是基于消息的。但不是你所讨论的钩子,它实际上是由一个“事件”触发的。它仅在* Windows创建消息并将其放入具有焦点的窗口的消息队列中之前运行。与WH_MOUSE相比较,WH_MOUSE是一个全局钩子,当应用程序调用Get/PeekMessage并且即将从消息队列中检索鼠标消息时运行。因此实际上由消息触发。 – 2011-12-26 01:00:36

回答

1

是的,这是一个windows消息机制,你可以在它到达目标窗口过程(消息循环)之前处理这些数据(消息)。

如果你想挂钩其他进程窗口,你可以简单地在DLL中做到这一点,并使用DLL注入注入你的库到其他进程。

相关问题