21

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

4

1 回答 1

38

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

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

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

如果没有遇到示例代码,你就无法挥动猫,谷歌会给你很多。因此,如果您以前从未编写过这样的钩子,请务必使用已知可工作的东西,这样可以避免很多麻烦。

于 2012-05-23T11:37:50.283 回答