WH_KEYBOARD和WH_KEYBOARD_LL之间的区别?

两个人的工作有什么区别? 对于WH_KEYBOARD_LL 我读到它安装了一个监视低级键盘输入事件的钩子程序。 低级键盘事件是什么意思?

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

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

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

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