美文网首页程序员
关于使用sendkeys函数后,NumLock被更改的问题

关于使用sendkeys函数后,NumLock被更改的问题

作者: zhanguoru01 | 来源:发表于2019-10-16 14:54 被阅读0次

    关于使用sendkeys函数后,NumLock会被更改的问题,开始我以为是键盘坏了,由于无线键盘没有Number LOCK灯,后特意接上有线,并测试代码,发再使用Sendkeys会更改NumLock,经在网上查证确实存在此BUG,并给出替代方案,请使用API代替Sendkeys.

    '1.宣称API

    Public Declare Sub keybd_event Lib "use32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

    '2.函数应用

    VOID keybd_event(

      BYTE bVk, // virtual-key code

      BYTE bScan, // hardware scan code

      DWORD dwFlags, // flags specifying various function options

      DWORD dwExtraInfo // additional data associated with keystroke

     从原型可以看出,Keybd_event()共有四个参数:

          第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常用模拟键的键值对照表);

          第二个参数为扫描码,一般不用设置,用0代替就行;

          第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP";

          第四个参数一般也是置0即可。

    例子1:模拟按下'A'键

    keybd_event(65,0,0,0)

    keybd_event(65,0,KEYEVENTF_KEYUP,0)

    常用键值:

    功能键 其它键 

    键   键码    键   键码    键   键码     键    键码 

    A   65     0   96     F1   112   Backspace    8 

    B   66     1   97     F2   113   Tab       9 

    C   67     2   98      F3   114    Clear      12 

    D   68   3   99     F4   115  Enter      13 

    E   69     4   100    F5   116  Shift      16 

    F   70     5   101    F6   117  Control     17 

    G   71     6   102    F7   118   Alt       18 

    H   72    7   103    F8   119  Caps Lock    20 

    I   73    8   104    F9   120  Esc       27 

    J   74    9   105    F10  121  Spacebar    32 

    K   75    *   106     F11  122  Page Up     33 

    L   76    +   107     F12  123  Page Down    34 

    M   77    Enter 108    --   --   End       35 

    N   78    -   109    --   --    Home      36 

    O   79    .   110    --   --     Left Arrow   37 

    P   80    /   111    --   --     Up Arrow    38 

    Q   81    --   --     --   --     Right Arrow   39 

    R   82    --   --    --   --      Down Arrow    40 

    S   83    --   --     --   --     Insert      45 

    T   84    --   --     --   --     Delete      46 

    U   85    --   --     --   --     Help       47 

    V   86    --   --    --   --     Num Lock     144 

          W   87

          X   88

          Y   89

          Z   90

          0   48

          1   49

          2   50

          3   51

          4   52

          5   53

          6   54

          7   55

          8   56

          9   57

    相关文章

      网友评论

        本文标题:关于使用sendkeys函数后,NumLock被更改的问题

        本文链接:https://www.haomeiwen.com/subject/tlcumctx.html