KeyboardProc 回调函数
说明
与 SetWindowsHookExA SetWindowsHookExW函数一起使用的应用程序定义或库定义的回调函数。/
每当应用程序调用 GetMessage 或 PeekMessageA/PeekMessageW函数并且有键盘消息 (要处理的WM_KEYUP或WM_KEYDOWN时,系统都会调用此函数。
HOOKPROC 类型定义指向此回调函数的指针。 KeyboardProc 是应用程序定义或库定义的函数名称的占位符。
LRESULT CALLBACK KeyboardProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
参数
代码 [in]
类型: int
挂钩过程用于确定如何处理消息的代码。
如果 代码 小于零,挂钩过程必须将消息传递给 CallNextHookEx 函数,而无需进一步处理,并且应返回 CallNextHookEx 返回的值。
此参数的取值可为下列值之一:
值 | 含义 |
---|---|
HC_ACTION 0 | wParam 和 lParam 参数包含有关击键消息的信息。 |
HC_NOREMOVE 3 | wParam 和 lParam 参数包含有关击键消息的信息,并且尚未从消息队列中删除击键消息。 (名为 PeekMessage 函数的应用程序,用于指定 PM_NOREMOVE flag.) |
wParam [in]
类型:WPARAM
生成 击键 消息的密钥的虚拟密钥代码。
lParam [in]
类型:LPARAM
重复计数、扫描代码、扩展键标志、上下文代码、以前的键状态标志和转换状态标志。 有关 lParam 参数的详细信息,请参阅 击键消息标志。 下表描述了此值的位。
Bits | 说明 |
---|---|
0-15 | 重复计数。 该值是用户按住键后重复击键的次数。 |
16-23 | 扫描代码。 此值取决于 OEM。 |
24 | 指示键是扩展键,例如功能键还是数字键盘上的键。 如果键是扩展键,则值为 1;否则为 0。 |
25-28 | 保留。 |
29 | 上下文代码。 如果 Alt 键关闭,则值为 1;否则为 0。 |
30 | 上一个键状态。 如果在发送消息之前键关闭,则值为 1;如果键已打开,则为 0。 |
31 | 转换状态。 如果按下键,则值为 0;如果释放键,则值为 1。 |
返回
类型: LRESULT
如果 代码 小于零,挂钩过程必须返回 CallNextHookEx 返回的值。
如果 代码 大于或等于零,并且挂钩过程未处理消息,强烈建议调用 CallNextHookEx 并返回它返回的值;否则,安装 WH_KEYBOARD 挂钩的其他应用程序将不会收到挂钩通知,因此行为可能不正确。
如果挂钩过程处理了消息,它可能会返回非零值,以防止系统将消息传递给挂钩链的其余部分或目标窗口过程。
注解
应用程序通过在调用 SetWindowsHookExA/ SetWindowsHookExW 函数中指定WH_KEYBOARD挂钩类型和指向挂钩过程的指针来安装挂钩过程。
可以在安装它的线程的上下文中调用此挂钩。 调用是通过向安装了挂钩的线程发送消息进行的。 因此,安装挂钩的线程必须具有消息循环。