模擬鍵盤動作API函式keydb_event,它可以模擬對鍵盤上的某個或某些鍵進行按下或放開的動作。
基本介紹
- 外文名:keybd_event
- 硬體掃描碼:BYTE bScan,
- 虛擬鍵值:BYTE bVk,
- 動作標識:DWORD dwFlags,
簡介,基本表格,
簡介
VOID keybd_event(
BYTE bVk, // 虛擬鍵值。
BYTE bScan, // 硬體掃描碼。
DWORD dwFlags, // 動作標識。
DWORD dwExtraInfo // 與鍵盤動作關聯的輔加信息。
);
其中,bVk表示虛擬鍵值,其實它是一個BYTE類型值的宏,其取值範圍為1-254。有關虛擬鍵值表請看最下文檔說明。bScan表示當鍵盤上某鍵被按下和放開時,鍵盤系統硬體產生的掃描碼,我們可以使用MapVirtualKey()函式在虛擬鍵值與掃描碼之間進行轉換。dwFlags表示各種各樣的鍵盤動作,它有兩種取值:
KEYEVENTF_EXTENDEDKEY和KEYEVENTF_KEYUP。
下面我們使用一段代碼實現在遊戲中按Ctrl+R快捷鍵對攻擊對象進行攻擊。
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0); //按下CTRL鍵。
keybd_event(0x52,MapVirtualKey(0x52,0),0,0);//鍵下R鍵。
keybd_event(0x52,MapVirtualKey(0x52,0), KEYEVENTF_KEYUP,0);//放開R鍵。
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),
KEYEVENTF_KEYUP,0);//放開CTRL鍵。
這裡是有問題的,會導致鍵不釋放:
API.keybd_event(0xA4,0, 0, 0); //按下ALT鍵。
Thread.Sleep(100);
API.PostMessage(fatherhwnd, API.WM_KEYDOWN, (int)Keys.F, 0);
Thread.Sleep(100);
API.keybd_event(0xA4, 0, 2, 2);//放開ALT鍵。
Thread.Sleep(100);
API.PostMessage(fatherhwnd, API.WM_KEYDOWN, (int)Keys.F, 0);
Thread.Sleep(100);
API.keybd_event(0xA4, 0, 2, 2);//放開ALT鍵。
基本表格
虛擬鍵 | 十六進制值 | 十進制值 | 相應鍵盤或滑鼠鍵 |
VK_LBUTTON | 01 | 1 | 滑鼠左鍵 |
VK_RBUTTON | 02 | 2 | 滑鼠右鍵 |
VK_CANCEL | 03 | 3 | Ctrl-Break鍵 |
VK_MBUTTON | 04 | 4 | 滑鼠中鍵 |
VK_BACK | 08 | 8 | Backspace鍵 |
VK_TAB | 09 | 9 | Tab鍵 |
VK_CLEAR | 0C | 12 | Clear鍵 |
VK_RETURN | 0D | 13 | Enter鍵 |
VK_SHIFT | 10 | 16 | Shift鍵 |
VK_CONTROL | 11 | 17 | Ctrl鍵 |
VK_MENU | 12 | 18 | Alt鍵 |
VK_PAUSE | 13 | 19 | Pause鍵 |
VK_CAPITAL | 14 | 20 | Caps Lock鍵 |
VK_ESCAPE | 1B | 27 | Esc鍵 |
VK_SPACE | 20 | 32 | Space鍵 |
VK_PRIOR | 21 | 33 | Page Up鍵 |
VK_NEXT | 22 | 34 | Page Down鍵 |
VK_END | 23 | 35 | End鍵 |
VK_HOME | 24 | 36 | Home鍵 |
VK_LEFT | 25 | 37 | ←鍵 |
VK_UP | 26 | 38 | ↑鍵 |
VK_RIGHT | 27 | 39 | →鍵 |
VK_DOWN | 28 | 40 | ↓鍵 |
VK_SELECT | 29 | 41 | Select鍵 |
VK_PRINT | 2A | 42 | Print鍵 |
VK_EXECUTE | 2B | 43 | Execute鍵 |
VK_SNAPSHOT | 2C | 44 | Print Screen鍵 |
VK_INSERT | 2D | 45 | Ins鍵 |
VK_DELETE | 2E | 46 | Del鍵 |
VK_HELP | 2F | 47 | Help鍵 |
VK_0 | 0x30 | 48 | 0鍵 |
VK_1 | 0x 31 | 49 | 1鍵 |
VK_2 | 0x 32 | 50 | 2鍵 |
VK_3 | 0x 33 | 51 | 3鍵 |
VK_4 | 0x 34 | 52 | 4鍵 |
VK_5 | 0x 35 | 53 | 5鍵 |
VK_6 | 0x 36 | 54 | 6鍵 |
VK_7 | 0x 37 | 55 | 7鍵 |
VK_8 | 0x 38 | 56 | 8鍵 |
VK_9 | 0x 39 | 57 | 9鍵 |
VK_A | 41 | 65 | A鍵 |
VK_B | 42 | 66 | B鍵 |
VK_C | 43 | 67 | C鍵 |
VK_D | 44 | 68 | D鍵 |
VK_E | 45 | 69 | E鍵 |
VK_F | 46 | 70 | F鍵 |
VK_G | 47 | 71 | G鍵 |
VK_H | 48 | 72 | H鍵 |
VK_I | 49 | 73 | I鍵 |
VK_J | 4A | 74 | J鍵 |
VK_K | 4B | 75 | K鍵 |
VK_L | 4C | 76 | L鍵 |
VK_M | 4D | 77 | M鍵 |
VK_N | 4E | 78 | N鍵 |
VK_O | 4F | 79 | O鍵 |
VK_P | 50 | 80 | P鍵 |
VK_Q | 51 | 81 | Q鍵 |
VK_R | 52 | 82 | R鍵 |
VK_S | 53 | 83 | S鍵 |
VK_T | 54 | 84 | T鍵 |
VK_U | 55 | 85 | U鍵 |
VK_V | 56 | 86 | V鍵 |
VK_W | 57 | 87 | W鍵 |
VK_X | 58 | 88 | X鍵 |
VK_Y | 59 | 89 | Y鍵 |
VK_Z | 5A | 90 | Z鍵 |
VK_LWIN | 5B | 91 | 左Windows鍵 |
VK_RWIN | 5C | 92 | 右Windows鍵 |
VK_APPS | 5D | 93 | 應用程式鍵 |
VK_SLEEP | 5F | 95 | 休眠鍵 |
VK_NUMPAD0 | 60 | 96 | 小數字鍵盤0鍵 |
VK_NUMPAD1 | 61 | 97 | 小數字鍵盤1鍵 |
VK_NUMPAD2 | 62 | 98 | 小數字鍵盤2鍵 |
VK_NUMPAD3 | 63 | 99 | 小數字鍵盤3鍵 |
VK_NUMPAD4 | 64 | 100 | 小數字鍵盤4鍵 |
VK_NUMPAD5 | 65 | 101 | 小數字鍵盤5鍵 |
VK_NUMPAD6 | 66 | 102 | 小數字鍵盤6鍵 |
VK_NUMPAD7 | 67 | 103 | 小數字鍵盤7鍵 |
VK_NUMPAD8 | 68 | 104 | 小數字鍵盤8鍵 |
VK_NUMPAD9 | 69 | 105 | 小數字鍵盤9鍵 |
VK_MULTIPLY | 6A | 106 | 乘號鍵 |
VK_ADD | 6B | 107 | 加號鍵 |
VK_SEPARATOR | 6C | 108 | 分割鍵 |
VK_SUBSTRACT | 6D | 109 | 減號鍵 |
VK_DECIMAL | 6E | 110 | 小數點鍵 |
VK_DIVIDE | 6F | 111 | 除號鍵 |
VK_F1 | 70 | 12 | F1鍵 |
VK_F2 | 71 | 113 | F2鍵 |
VK_F3 | 72 | 114 | F3鍵 |
VK_F4 | 73 | 115 | F4鍵 |
VK_F5 | 74 | 116 | F5鍵 |
VK_F6 | 75 | 117 | F6鍵 |
VK_F7 | 76 | 118 | F7鍵 |
VK_F8 | 77 | 119 | F8鍵 |
VK_F9 | 78 | 120 | F9鍵 |
VK_F10 | 79 | 121 | F10鍵 |
VK_F11 | 7A | 122 | F11鍵 |
VK_F12 | 7B | 123 | F12鍵 |
VK_F13 | 7C | 124 | F13鍵 |
VK_F14 | 7D | 125 | F14鍵 |
VK_F15 | 7E | 126 | F15鍵 |
VK_F16 | 7F | 127 | F16鍵 |
VK_F17 | 80 | 128 | F17鍵 |
VK_F18 | 81 | 129 | F18鍵 |
VK_F19 | 82 | 130 | F19鍵 |
VK_F20 | 83 | 131 | F20鍵 |
VK_F21 | 84 | 132 | F21鍵 |
VK_F22 | 85 | 133 | F22鍵 |
VK_F23 | 86 | 134 | F23鍵 |
VK_F24 | 87 | 135 | F24鍵 |
VK_NUMLOCK | 90 | 144 | Num Lock鍵 |
VK_SCROLL | 91 | 45 | Scroll Lock鍵 |
VK_LSHIFT | A0 | 160 | 左Shift鍵 |
VK_RSHIFT | A1 | 161 | 右Shift鍵 |
VK_LCONTROL | A2 | 162 | 左Ctrl鍵 |
VK_RCONTROL | A3 | 163 | 右Ctrl鍵 |
VK_LMENU | A4 | 164 | 左Alt鍵 |
VK_RMENU | A5 | 165 | 右Alt鍵 |