WH_KEYBOARD和WH_KEYBOARD_LL之间的区别?

时间:2012-05-23 10:24:00

标签: c++ c winapi hook wh-keyboard-ll

两个人的工作有什么区别?对于WH_KEYBOARD_LL i read,它安装了一个监视低级键盘输入事件的挂钩过程。 低级键盘事件是什么意思?

1 个答案:

答案 0 :(得分:29)

嗯,不要过分关注这个词,它不会澄清任何事情。这两者之间存在巨大差异。 WH_KEYBOARD_LL安装一个钩子,需要在您自己的程序中实现回调。并且您必须提供一个消息循环,以便Windows可以在发送键盘消息时进行回调。这使得它很容易上手。

WH_KEYBOARD的工作方式非常不同,它需要一个可以安全地注入到钩子进程中的DLL。这让人难以理解,在不影响进程的情况下注入DLL并不容易。特别是在64位操作系统上。如果其他一些过程需要了解击键,也不需要处理您可能需要的进程间通信。就像一个关键的记录器。

WH_KEYBOARD的优点是它可以访问键盘状态。这是Windows中的每进程属性。当您想要使用钩子将虚拟键转换为自己键入键时,状态如活动键盘布局以及修饰符和死键的状态非常重要。您无法从外部进程可靠地调用ToUnicodeEx()。

你不能在没有遇到示例代码的情况下摆动猫,谷歌会给你足够的。因此,如果你之前从未写过这样的钩子,请务必使用已知的工作方式,这样可以避免很多悲伤。