VB SetWindowsHookEx全局键盘钩子实现

VB 的全局键盘钩子用得好,能帮你轻松搞定键盘监听那点事。SetWindowsHookEx配合低级钩子WH_KEYBOARD_LL,你可以捕获整个系统里的按键事件,不管焦点在哪儿。用起来其实也不难,声明下 API、写个回调函数、调用一下就行,像这样:

Declare Function SetWindowsHookEx Lib "user32" ( _
  ByVal idHook As Integer, ByVal lpfn As Long, ByVal hMod As Long, ByVal dwThreadId As Long) As Long

啦,回调函数也不能少,它是整个钩子的灵魂。你得定义一个符合KeyboardHookProc的原型,把逻辑都塞进去,比如判断按键状态什么的:

Private Delegate Function KeyboardHookProc( _
  ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer

Private Shared hookProc As KeyboardHookProc = New KeyboardHookProc(AddressOf KeyboardHookCallback)

装钩子也不麻烦,核心一句话搞定:

Dim hHook As IntPtr = SetWindowsHookEx(WH_KEYBOARD_LL, hookProc, ModuleHandle, 0)

注意,ModuleHandle要准确,不然装不进去。结束时别忘了UnhookWindowsHookEx,不然系统会不开心。

这种钩子挺适合做键盘记录、快捷键响应、甚至游戏外挂,但安全和性能你得自己把握好。要是你项目里刚好用 VB,又需要监听全局按键,这套方案还挺实用的。顺便说一句,要是你更熟 C#或者 Delphi,也可以看看下面这些:

如果你打算做个全局热键,或者对键盘操作有定制需求,可以试试这套 Hook 方案,灵活又不算难上手。

rar 文件大小:5.99KB