模擬按下某快捷鍵: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            '

                                    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM