繁体   English   中英

如何要求键盘挂钩处理父窗口后的消息

[英]How to ask keyboard hook to process messages AFTER the parent window

标题说明了一切。 在父窗口处理它们后,如何要求键盘挂钩处理传入的键盘消息? 阅读文档后,我发现确实有一个名为WH_CALLWNDPROCRET的值可以执行此操作,但是我需要在WH_KEYBOARD指定WH_KEYBOARD (当然要使其成为键盘钩子),并且该值似乎不是位标志,因此我可以不能两者兼而有之。

背景 :我正在为Word 2013编写一个加载项,该加载项需要监视某些键并仅 Word完成处理这些键之后才采取适当的措施。 我正在使用globalmousekeyhook项目进行挂钩。

您所引用的库正在订阅以下四个钩子:

  • WH_KEYBOARD_LL
  • WH_KEYBOARD
  • WH_MOUSE_LL
  • WH_MOUSE

当您订阅一个钩子时,您会给系统一个代码回调,该回调将根据不同钩子类型的规则执行。 同样,回调将提供给您的信息也必须以不同的方式解释。 这4个控件提供有关鼠标位置,按键等的信息。

您可以订阅很多不同类型的钩子。 请参阅: 挂钩概述

您所指的WH_CALLWNDPROCRET是其中之一。 它具有不同的回调调用行为,并向您传递所有发送到窗口的消息。 从理论上讲,这些消息可能包括数百种可能的消息中的任何一种,而不仅仅是键盘和鼠标消息。

为了回答您的问题,库globalmousekeyhook除了上述4个钩子之外,不能订阅任何其他钩子。

好消息是您可以重用库中的代码来实现自己的订阅。

  • 您可以重复使用代码来安装挂钩。
  • 回调的签名当然会有所不同。
  • 然后,您将收到所有消息。
  • 仅过滤出您感兴趣的消息,例如WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP
  • 解释与消息一起传递的数据。 同样在这里,您可以重用库中的一些代码。

结论不,图书馆无法满足您的需求。 是的,您可能可以通过重用该库中的代码来实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM