如何要求键盘挂钩在 parent window 之后处理消息
How to ask keyboard hook to process messages AFTER the parent window
标题说明了一切。在 parent window 处理完传入的键盘消息后,如何让我的键盘钩子处理这些消息?阅读 docs 我发现有一个名为 WH_CALLWNDPROCRET
的值正是这样做的,但我需要在那里指定 WH_KEYBOARD
(当然要使其成为键盘挂钩),并且该值不好像有点flag,所以我不能把两者结合起来。
背景:我正在为Word 2013写一个add-in,它需要监控某些键并只在[=之后采取适当的行动22=] Word 已完成对这些键的处理。我正在使用 globalmousekeyhook 项目进行挂钩。
您所指的图书馆正在订阅以下四个挂钩:
- WH_KEYBOARD_LL
- WH_KEYBOARD
- WH_MOUSE_LL
- WH_MOUSE
当你订阅一个钩子时,你给了系统一个对你代码的回调,它将根据不同钩子类型的规则执行。此外,回调将传递给您的信息必须以不同的方式解释。这 4 个提供有关鼠标位置、击键等的信息。
您可以订阅许多不同类型的挂钩。参见:Hook Overview
你们所指的WH_CALLWNDPROCRET
就是其中之一。它有不同的回调调用行为,并为您提供发送到 window 的所有消息。这些理论上可能包括数百种可能的消息中的任何一种,而不仅仅是键盘和鼠标消息。
为了回答您的问题,图书馆 globalmousekeyhook
无法订阅除上述 4 个之外的任何其他挂钩。
好消息是,您或许可以重用库中的代码来实现您自己的订阅。
- 您可以重复使用代码来安装挂钩。
- 您的回调签名当然会有所不同。
- 然后您将收到所有消息。
- 只过滤掉您感兴趣的消息,例如
WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP
.
- 解释与消息一起传送的数据。您也可以在这里重用库中的一些代码。
结论
不,图书馆无法满足您的需求。
是的,您可能可以通过重用该库中的代码来实现这一点。
标题说明了一切。在 parent window 处理完传入的键盘消息后,如何让我的键盘钩子处理这些消息?阅读 docs 我发现有一个名为 WH_CALLWNDPROCRET
的值正是这样做的,但我需要在那里指定 WH_KEYBOARD
(当然要使其成为键盘挂钩),并且该值不好像有点flag,所以我不能把两者结合起来。
背景:我正在为Word 2013写一个add-in,它需要监控某些键并只在[=之后采取适当的行动22=] Word 已完成对这些键的处理。我正在使用 globalmousekeyhook 项目进行挂钩。
您所指的图书馆正在订阅以下四个挂钩:
- WH_KEYBOARD_LL
- WH_KEYBOARD
- WH_MOUSE_LL
- WH_MOUSE
当你订阅一个钩子时,你给了系统一个对你代码的回调,它将根据不同钩子类型的规则执行。此外,回调将传递给您的信息必须以不同的方式解释。这 4 个提供有关鼠标位置、击键等的信息。
您可以订阅许多不同类型的挂钩。参见:Hook Overview
你们所指的WH_CALLWNDPROCRET
就是其中之一。它有不同的回调调用行为,并为您提供发送到 window 的所有消息。这些理论上可能包括数百种可能的消息中的任何一种,而不仅仅是键盘和鼠标消息。
为了回答您的问题,图书馆 globalmousekeyhook
无法订阅除上述 4 个之外的任何其他挂钩。
好消息是,您或许可以重用库中的代码来实现您自己的订阅。
- 您可以重复使用代码来安装挂钩。
- 您的回调签名当然会有所不同。
- 然后您将收到所有消息。
- 只过滤掉您感兴趣的消息,例如
WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP
. - 解释与消息一起传送的数据。您也可以在这里重用库中的一些代码。
结论 不,图书馆无法满足您的需求。 是的,您可能可以通过重用该库中的代码来实现这一点。