C++模拟游戏中鼠标点击和键盘按键

游戏中模拟键盘输入,有时回被系统屏蔽,Java等语言都试过很多方法,好像都没用,所以下面给出一种C++实现方法

#include <iostream>
#include <windows.h>
// for key pushing
BYTE scan_code(DWORD pKey)
{
    const DWORD result = MapVirtualKey(pKey, MAPVK_VK_TO_VSC);
    return static_cast<BYTE>(result);
}
void press_key(DWORD pKey)
{
    keybd_event(static_cast<BYTE>(pKey), scan_code(pKey), 0, 0);
}
void release_key(DWORD pKey)
{
    keybd_event(static_cast<BYTE>(pKey), scan_code(pKey), KEYEVENTF_KEYUP, 0);
}
// for testing
#define PRESS(x) press_key(x); std::cout << "Press: " #x << std::endl
#define RELEASE(x) release_key(x); std::cout << "Release: " #x << std::endl
// test
int main(void)
{
	Sleep(3000);
	mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
	Sleep(10);
	mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
	int len = 10;
	int i=0;
    for (i=0;i<len;i++)
    {
        PRESS(65);//按键a
        Sleep(100);
    }
}

 

转载自:C++模拟游戏中鼠标点击和键盘按键

 

附:常用模拟键的键值对照表。
键盘键与虚拟键码对照表


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

 

转载自:键盘虚拟键值编码表 使用keybd_Event 以及虚拟按键与扫描码相互转化函数MapVirtualKey