Keyboard Hook API函数 参数说明

时间:2021-11-08 06:53:06

1、Keyboard的HOOK函数分为两种,WH_KEYBOARD_LL和WH_KEYBOARD。我们一般用第一种,全局的键盘钩子,能拦截所有的键盘按键的动静。

  2、网上有人说,全局的钩子要放在单独的DLL中才华使用。我试了一下,不放在单独的DLL中,,在XP+VS2005下,调试和运行都没有问题;在XP+VS2008下,调试会堕落,不过编译后能运行;在WIN7+VS2010下,调试会堕落,编译后能运行。这方面有研究的网友,望不吝见教。

  3、WH_KEYBOARD_LL和WH_KEYBOARD,这是两种差此外钩子,虽然最后都是KeyboardHookProc函数措置惩罚惩罚拦截的动静,但是具体的每个参数的意义却完全不一样。

    WH_KEYBOARD钩子。KeyboardHookProc函数的各个参数意义如下:

    nCode    动静的类型,分HC_ACTION和HC_NOREMOVE

    wParam    按键的虚拟键码 

    lParam    按键的相关参数信息,包孕反复时间、按键的状态(按下或弹起)等

    WH_KEYBOARD_LL钩子。KeyboardHookProc函数的各个参数意义如下:

    nCode    动静的类型,有HC_ACTION

    wParam    按键的状态(按下或弹起)WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN、WM_SYSKEYUP

    lParam    指向KeyboardHookStruct布局的指针,该布局包罗了按键的详细信息。     

    可以看出,这两种钩子的参数的界说是完全不一样的。而在之前的代码中:Dim MyKeyboardHookStruct As KeyboardHookStruct = DirectCast(Marshal.PtrToStructure(lParam, GetType(KeyboardHookStruct)), KeyboardHookStruct)就是将该指针指向的内容复制到指定的布局中。