WH_KEYBOARD和WH_KEYBOARD_LL之间的区别?

pro*_*eve 19 c c++ hook winapi wh-keyboard-ll

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

Han*_*ant 30

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

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

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

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

  • 不.SetWindowsHookEx()的第二个参数是一个函数指针.到回调函数.当有趣的事情发生时,Windows调用的那个.请参阅您最喜欢的关于函数指针的C语言编程书. (4认同)
  • 很确定在之前的问题中已经向您解释过了.如果它仍然是那么神秘,那么请考虑将这个项目留在架子上,直到你有时间了解更多有关基本winapi和编程的内容.获取钩子并非易事. (2认同)