模拟键盘输入字符串,由于字符的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}
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}