关于RIT

来源:互联网 发布:sqlserver分页 编辑:程序博客网 时间:2024/05/01 16:44

根据27章:
"RIT将键盘事件放入线程的虚拟输入队列时不用涉及具体的窗口。当这个线程调用GetMessage时..."说明
消息结构是在RIT里组装的。也就是说钩子只有在RIT里才能得到处理所有消息(暂时是硬件消息如键盘,鼠标)的机会。可以猜测的是全局钩子在RIT里实现而局部钩子在线程的虚拟输入队列里实现。
"那么RIT怎么才能知道要向哪一个线程的虚拟输入队列里增加硬件输入消息?对鼠标消息,RIT只是确定是哪一个窗口在鼠标光标之下。利用这个窗口,RIT调用GetWindowThreadProcessId来确定是哪个线程建立了这个窗口。返回的线程ID指出哪一个线程应该得到这个鼠标消息。"
这个说明RIT是通过主动的方式得到消息的接受者,而不是像全局钩子一样是被动的查找RIT内部设置的变量来实现。
"拖动是使用鼠标捕获的最常见理由"说明了微软推荐用鼠标事件来控制SetCapture函数。