zoukankan      html  css  js  c++  java
  • 模拟按下某快捷键:keybd_event使用方法

    keybd_event是函数功能:该函数合成一次击键事件。系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息。

    Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。

    该函数原型如下:

      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);

    例子2:模拟按下'ALT+F4'键
       keybd_event(18,0,0,0);
       keybd_event(115,0,0,0);
       keybd_event(115,0,KEYEVENTF_KEYUP,0);
       keybd_event(18,0,KEYEVENTF_KEYUP,0);

    例子3:模拟按下'ctrl+v'键

      [System.Runtime.InteropServices.DllImport("user32")]
            public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
            private void FormWork_Load(object sender, EventArgs e)
            {
                keybd_event((byte)Keys.ControlKey, 0, 0, 0);//按下
                keybd_event((byte)Keys.V, 0, 0, 0);
                keybd_event((byte)Keys.ControlKey, 0, 0x2, 0);//松开
                keybd_event((byte)Keys.V, 0, 0x2, 0);
            }

    附:常用模拟键的键值对照表(也可参考http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx

      字母和数字键     数字小键盘的键       功能键         其它键 
          键   键码     键   键码       键   键码     键      键码 
          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  

    0x1 鼠标左键
    0x2 鼠标右键
    0x3 CANCEL 键
    0x4 鼠标中键
    0x8 BACKSPACE 键
    0x9 TAB 键
    0xC CLEAR 键
    0xD ENTER 键
    0x10 SHIFT 键
    0x11 CTRL 键
    0x12 MENU 键
    0x13 PAUSE 键
    0x14 CAPS LOCK 键
    0x1B ESC 键
    0x20 SPACEBAR 键
    0x21 PAGE UP 键
    0x22 PAGE DOWN 键
    0x23 END 键
    0x24 HOME 键
    0x25 LEFT ARROW 键
    0x26 UP ARROW 键
    0x27 RIGHT ARROW 键
    0x28 DOWN ARROW 键
    0x29 Select 键
    0x2A PRINT SCREEN 键
    0x2B EXECUTE 键
    0x2C SNAPSHOT 键
    0x2D Insert 键
    0x2E Delete 键
    0x2F HELP 键
    0x90 NUM LOCK 键
    A 至 Z 键与 A – Z 字母的 ASCII 码相同:
    值 描述
    65 A 键
    66 B 键
    67 C 键
    68 D 键
    69 E 键
    70 F 键
    71 G 键
    72 H 键
    73 I 键
    74 J 键
    75 K 键
    76 L 键
    77 M 键
    78 N 键
    79 O 键
    80 P 键
    81 Q 键
    82 R 键
    83 S 键
    84 T 键
    85 U 键
    86 V 键
    87 W 键
    88 X 键
    89 Y 键
    90 Z 键
    0 至 9 键与数字 0 – 9 的 ASCII 码相同:
    值 描述
    48 0 键
    49 1 键
    50 2 键
    51 3 键
    52 4 键
    53 5 键
    54 6 键
    55 7 键
    56 8 键
    57 9 键
    下列常数代表数字键盘上的键:
    值 描述
    0x60 0 键
    0x61 1 键
    0x62 2 键
    0x63 3 键
    0x64 4 键
    0x65 5 键
    0x66 6 键
    0x67 7 键
    0x68 8 键
    0x69 9 键
    0x6A MULTIPLICATION SIGN (*) 键
    0x6B PLUS SIGN (+) 键
    0x6C ENTER 键
    0x6D MINUS SIGN (–) 键
    0x6E DECIMAL POINT (.) 键
    0x6F DIVISION SIGN (/) 键
    下列常数代表功能键:
    值 描述
    0x70 F1 键
    0x71 F2 键
    0x72 F3 键
    0x73 F4 键
    0x74 F5 键
    0x75 F6 键
    0x76 F7 键
    0x77 F8 键
    0x78 F9 键
    0x79 F10 键
    0x7A F11 键
    0x7B F12 键
    0x7C F13 键
    0x7D F14 键
    0x7E F15 键
    0x7F F16 键

    0    None


    3        Cancel(Break)
    8        Back
    9        Tab
    13        Return
    16        ShiftKey
    17        ControlKey
    18        Menu
    19        Pause
    20        Capital(大小写)

    27        Escape

    32        Space
    33        PageUp
    34        Next(PageDonw)
    35        End
    36        Home
    37        Left
    38        Up
    39        Right
    40        Down

    0-9       48-57


    45        Insert
    46        Delete

    65->90    A->Z


    91        LWin

    93        Apps

    96    105        NumPad0-
    106        Multiply     *
    107        Add+
    108
    109        Subtract-
    110        Decimal        .
    111        Divide /
    112-123        F1-F12    

    144        NumLock
    145        Scroll

    173        VolumeMute
    174        VolumeDown
    175        VolumeUp




    186        Oem1        ;
    187        Oemplus        =
    188        Oemcomma    ,
    189        OemMinus    -
    190        OemPeriod    .
    191        OemQuestion    /
    192        Oemtilde    `




    219        OemOpenBrackets    [
    220        Oem5            /
    221        Oem6            ]
    222        Oem7            '

                                        

  • 相关阅读:
    洛谷 P3392 涂国旗
    CODEVS 1066/洛谷 P1514引水入城
    POJ 1286 Necklace of Beads(项链的珠子)
    CODEVS 1138 聪明的质监员
    洛谷 P1241 括号序列
    C++之路进阶——codevs2313(星际竞速)
    C++之路进阶——codevs2366(朋友圈)
    c++之路进阶——hdu3507(Print Article)
    C++之路进阶——codevs2404(糖果)
    C++之路进阶——codevs4655(序列终结者)
  • 原文地址:https://www.cnblogs.com/shenbing/p/5964675.html
Copyright © 2011-2022 走看看