模拟键盘输入字符串
模拟键盘输入字符串,由于字符的ASCII和键盘码不是一样的,所以写个函数出来自己用用!
由于我先现在需要输入的信息只是字符和数字,所以没有考虑中文的问题!
1
void EnterString(const char* text)
2
{
3
bool bShift = false;
4
size_t length = strlen(text);
5
for(size_t index = 0;index < length;index++)
6
{
7
int val = text[index];
8
if(val >= 97 && val <= 122) //小写a-z
9
{
10
val -= 32;
11
bShift = false;
12
}
13
else if(val >= 65 && val <= 90) //大写A-Z
14
{
15
bShift = true;
16
}
17
else if(val >= 48 && val <= 57) //数字0-9
18
{
19
bShift = false;
20
}
21
else //特殊符号
22
{
23
switch(val)
24
{
25
case '`':
26
val = 192;
27
bShift = false;
28
break;
29
case '~':
30
val = 192;
31
bShift = true;
32
break;
33
case '!':
34
val = '1'; //!和1在同一个键盘,使用同一个键盘码,以下相同
35
bShift = true;
36
break;
37
case '@':
38
val = '2'; //@和2在同一个键盘,使用同一个键盘码,以下相同
39
bShift = true;
40
break;
41
case '#':
42
val = '3';
43
bShift = true;
44
break;
45
case '$':
46
val = '4';
47
bShift = true;
48
break;
49
case '%':
50
val = '5';
51
bShift = true;
52
break;
53
case '^':
54
val = '6';
55
bShift = true;
56
break;
57
case '&':
58
val = '7';
59
bShift = true;
60
break;
61
case '*':
62
val = '8';
63
bShift = true;
64
break;
65
case '(':
66
val = '9';
67
bShift = true;
68
break;
69
case ')':
70
val = '0';
71
bShift = true;
72
break;
73
case '-':
74
val = 189;
75
bShift = false;
76
break;
77
case '=':
78
val = 187;
79
bShift = false;
80
break;
81
case '_':
82
val = 189;
83
bShift = true;
84
break;
85
case '+':
86
val = 187;
87
bShift = true;
88
break;
89
case '[':
90
val = 219;
91
bShift = false;
92
break;
93
case '{':
94
val = 219;
95
bShift = true;
96
break;
97
case ']':
98
val = 221;
99
bShift = false;
100
break;
101
case '}':
102
val = 221;
103
bShift = true;
104
break;
105
case '\\':
106
val = 220;
107
bShift = false;
108
break;
109
case '|':
110
val = 220;
111
bShift = true;
112
break;
113
case ';':
114
val = 186;
115
bShift = false;
116
break;
117
case ':':
118
val = 186;
119
bShift = true;
120
case '\'':
121
val = 222;
122
bShift = false;
123
break;
124
case '\"':
125
val = 222;
126
bShift = true;
127
break;
128
case ',':
129
val = 188;
130
bShift = false;
131
break;
132
case '<':
133
val = 188;
134
bShift = true;
135
break;
136
case '.':
137
val = 190;
138
bShift = false;
139
break;
140
case '>':
141
val = 190;
142
bShift = true;
143
break;
144
case '/':
145
val = 191;
146
bShift = false;
147
break;
148
case '?':
149
val = 191;
150
bShift = true;
151
break;
152
default:
153
break;
154
}
155
}
156
157
if(bShift)
158
keybd_event(VK_SHIFT,0,0,0);
159
keybd_event(val,0,0,0);
160
keybd_event(val,0,KEYEVENTF_KEYUP,0);
161
if(bShift)
162
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
163
}
164
}
void EnterString(const char* text)2
{3
bool bShift = false;4
size_t length = strlen(text);5
for(size_t index = 0;index < length;index++)6
{7
int val = text[index];8
if(val >= 97 && val <= 122) //小写a-z9
{10
val -= 32;11
bShift = false;12
}13
else if(val >= 65 && val <= 90) //大写A-Z14
{15
bShift = true;16
}17
else if(val >= 48 && val <= 57) //数字0-918
{19
bShift = false;20
}21
else //特殊符号22
{23
switch(val)24
{25
case '`':26
val = 192;27
bShift = false;28
break;29
case '~':30
val = 192;31
bShift = true;32
break;33
case '!':34
val = '1'; //!和1在同一个键盘,使用同一个键盘码,以下相同35
bShift = true;36
break;37
case '@':38
val = '2'; //@和2在同一个键盘,使用同一个键盘码,以下相同39
bShift = true;40
break;41
case '#':42
val = '3';43
bShift = true;44
break;45
case '$':46
val = '4';47
bShift = true;48
break;49
case '%':50
val = '5';51
bShift = true;52
break;53
case '^':54
val = '6';55
bShift = true;56
break;57
case '&':58
val = '7';59
bShift = true;60
break;61
case '*':62
val = '8';63
bShift = true;64
break;65
case '(':66
val = '9';67
bShift = true;68
break;69
case ')':70
val = '0';71
bShift = true;72
break;73
case '-':74
val = 189;75
bShift = false;76
break;77
case '=':78
val = 187;79
bShift = false;80
break;81
case '_':82
val = 189;83
bShift = true;84
break;85
case '+':86
val = 187;87
bShift = true;88
break;89
case '[':90
val = 219;91
bShift = false;92
break;93
case '{':94
val = 219;95
bShift = true;96
break;97
case ']':98
val = 221;99
bShift = false;100
break;101
case '}':102
val = 221;103
bShift = true;104
break;105
case '\\':106
val = 220;107
bShift = false;108
break;109
case '|':110
val = 220;111
bShift = true;112
break;113
case ';':114
val = 186;115
bShift = false;116
break;117
case ':':118
val = 186;119
bShift = true;120
case '\'':121
val = 222;122
bShift = false;123
break;124
case '\"':125
val = 222;126
bShift = true;127
break;128
case ',':129
val = 188;130
bShift = false;131
break;132
case '<':133
val = 188;134
bShift = true;135
break;136
case '.':137
val = 190;138
bShift = false;139
break;140
case '>':141
val = 190;142
bShift = true;143
break;144
case '/':145
val = 191;146
bShift = false;147
break;148
case '?':149
val = 191;150
bShift = true;151
break;152
default:153
break;154
}155
}156

157
if(bShift)158
keybd_event(VK_SHIFT,0,0,0);159
keybd_event(val,0,0,0);160
keybd_event(val,0,KEYEVENTF_KEYUP,0);161
if(bShift)162
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);163
}164
}
--kaixuan's cnblogs


浙公网安备 33010602011771号