Windows提供了一个模拟键盘API函数Keybd_event(),该函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。
[DllImport("user32.dll", EntryPoint = "keybd_event")]
public static extern void keybd_event(
byte bVk, //虚拟键值
byte bScan,// 一般为0
int dwFlags, //这里是整数类型 0 为按下,2为释放
int dwExtraInfo //这里是整数类型 一般情况下设成为 0
);
使用方法:
keybd_event((byte)Keys.LWin, 0, 0, 0); //按下LWIN
keybd_event((byte)Keys.D, 0, 0, 0); //按下D
keybd_event((byte)Keys.LWin, 0, 2, 0); //释放LWIN
keybd_event((byte)Keys.D, 0, 2, 0); //释放D
补充:
1.调用API函数记得引用:using System.Runtime.InteropServices;
2.表格如下,是转过来的。
PS:如果上面(byte)keys.Alt等出现overflow 的问题,可以直接用表格的数字来代替。
虚拟键码
|
对应值
|
对应键
|
VK_LBUTTON
|
1
|
鼠标左键
|
VK_RBUTTON
|
2
|
鼠标右键
|
VK_CANCEL
|
3
|
Cancel
|
VK_MBUTTON
|
4
|
鼠标中键
|
VK_XBUTTON1
|
5
|
|
VK_XBUTTON2
|
6
|
|
VK_BACK
|
8
|
Backspace
|
VK_TAB
|
9
|
Tab
|
VK_CLEAR
|
12
|
Clear
|
VK_RETURN
|
13
|
Enter
|
VK_SHIFT
|
16
|
Shift
|
VK_CONTROL
|
17
|
Ctrl
|
VK_MENU
|
18
|
Alt
|
VK_PAUSE
|
19
|
Pause
|
VK_CAPITAL
|
20
|
Caps Lock
|
VK_KANA
|
21
|
|
VK_HANGUL
|
21
|
|
VK_JUNJA
|
23
|
|
VK_FINAL
|
24
|
|
VK_HANJA
|
25
|
|
VK_KANJI
|
25*
|
|
VK_ESCAPE
|
27
|
Esc
|
VK_CONVERT
|
28
|
|
VK_NONCONVERT
|
29
|
|
VK_ACCEPT
|
30
|
|
VK_MODECHANGE
|
31
|
|
VK_SPACE
|
32
|
Space
|
VK_PRIOR
|
33
|
Page Up
|
VK_NEXT
|
34
|
Page Down
|
VK_END
|
35
|
End
|
VK_HOME
|
36
|
Home
|
VK_LEFT
|
37
|
Left Arrow
|
VK_UP
|
38
|
Up Arrow
|
VK_RIGHT
|
39
|
Right Arrow
|
VK_DOWN
|
40
|
Down Arrow
|
VK_SELECT
|
41
|
Select
|
VK_PRINT
|
42
|
Print
|
VK_EXECUTE
|
43
|
Execute
|
VK_SNAPSHOT
|
44
|
Snapshot
|
VK_INSERT
|
45
|
Insert
|
VK_DELETE
|
46
|
Delete
|
VK_HELP
|
47
|
Help
|
48
|
0
|
|
49
|
1
|
|
50
|
2
|
|
51
|
3
|
|
52
|
4
|
|
53
|
5
|
|
54
|
6
|
|
55
|
7
|
|
56
|
8
|
|
57
|
9
|
|
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
|
|
VK_LWIN
|
91
|
|
VK_RWIN
|
92
|
|
VK_APPS
|
93
|
|
VK_SLEEP
|
95
|
|
VK_NUMPAD0
|
96
|
小键盘 0
|
VK_NUMPAD1
|
97
|
小键盘 1
|
VK_NUMPAD2
|
98
|
小键盘 2
|
VK_NUMPAD3
|
99
|
小键盘 3
|
VK_NUMPAD4
|
100
|
小键盘 4
|
VK_NUMPAD5
|
101
|
小键盘 5
|
VK_NUMPAD6
|
102
|
小键盘 6
|
VK_NUMPAD7
|
103
|
小键盘 7
|
VK_NUMPAD8
|
104
|
小键盘 8
|
VK_NUMPAD9
|
105
|
小键盘 9
|
VK_MULTIPLY
|
106
|
小键盘 *
|
VK_ADD
|
107
|
小键盘 +
|
VK_SEPARATOR
|
108
|
小键盘 Enter
|
VK_SUBTRACT
|
109
|
小键盘 -
|
VK_DECIMAL
|
110
|
小键盘 .
|
VK_DIVIDE
|
111
|
小键盘 /
|
VK_F1
|
112
|
F1
|
VK_F2
|
113
|
F2
|
VK_F3
|
114
|
F3
|
VK_F4
|
115
|
F4
|
VK_F5
|
116
|
F5
|
VK_F6
|
117
|
F6
|
VK_F7
|
118
|
F7
|
VK_F8
|
119
|
F8
|
VK_F9
|
120
|
F9
|
VK_F10
|
121
|
F10
|
VK_F11
|
122
|
F11
|
VK_F12
|
123
|
F12
|
VK_F13
|
124
|
|
VK_F14
|
125
|
|
VK_F15
|
126
|
|
VK_F16
|
127
|
|
VK_F17
|
128
|
|
VK_F18
|
129
|
|
VK_F19
|
130
|
|
VK_F20
|
131
|
|
VK_F21
|
132
|
|
VK_F22
|
133
|
|
VK_F23
|
134
|
|
VK_F24
|
135
|
|
VK_NUMLOCK
|
144
|
Num Lock
|
VK_SCROLL
|
145
|
Scroll
|
VK_LSHIFT
|
160
|
|
VK_RSHIFT
|
161
|
|
VK_LCONTROL
|
162
|
|
VK_RCONTROL
|
163
|
|
VK_LMENU
|
164
|
|
VK_RMENU
|
165
|
|
VK_BROWSER_BACK
|
166
|
|
VK_BROWSER_FORWARD
|
167
|
|
VK_BROWSER_REFRESH
|
168
|
|
VK_BROWSER_STOP
|
169
|
|
VK_BROWSER_SEARCH
|
170
|
|
VK_BROWSER_FAVORITES
|
171
|
|
VK_BROWSER_HOME
|
172
|
|
VK_VOLUME_MUTE
|
173
|
VolumeMute
|
VK_VOLUME_DOWN
|
174
|
VolumeDown
|
VK_VOLUME_UP
|
175
|
VolumeUp
|
VK_MEDIA_NEXT_TRACK
|
176
|
|
VK_MEDIA_PREV_TRACK
|
177
|
|
VK_MEDIA_STOP
|
178
|
|
VK_MEDIA_PLAY_PAUSE
|
179
|
|
VK_LAUNCH_MAIL
|
180
|
|
VK_LAUNCH_MEDIA_SELECT
|
181
|
|
VK_LAUNCH_APP1
|
182
|
|
VK_LAUNCH_APP2
|
183
|
|
VK_OEM_1
|
186
|
; :
|
VK_OEM_PLUS
|
187
|
= +
|
VK_OEM_COMMA
|
188
|
|
VK_OEM_MINUS
|
189
|
- _
|
VK_OEM_PERIOD
|
190
|
|
VK_OEM_2
|
191
|
/ ?
|
VK_OEM_3
|
192
|
` ~
|
VK_OEM_4
|
219
|
[ {
|
VK_OEM_5
|
220
|
\ |
|
VK_OEM_6
|
221
|
] }
|
VK_OEM_7
|
222
|
' "
|
VK_OEM_8
|
223
|
|
VK_OEM_102
|
226
|
|
VK_PACKET
|
231
|
|
VK_PROCESSKEY
|
229
|
|
VK_ATTN
|
246
|
|
VK_CRSEL
|
247
|
|
VK_EXSEL
|
248
|
|
VK_EREOF
|
249
|
|
VK_PLAY
|
250
|
|
VK_ZOOM
|
251
|
|
VK_NONAME
|
252
|
|
VK_PA1
|
253
|
|
VK_OEM_CLEAR
|
254
|
ASCII码
|
键盘
|
ASCII 码
|
键盘
|
ASCII 码
|
键盘
|
ASCII 码
|
键盘
|
27
|
ESC
|
32
|
SPACE
|
33
|
!
|
34
|
"
|
35
|
#
|
36
|
$
|
37
|
%
|
38
|
&
|
39
|
'
|
40
|
(
|
41
|
)
|
42
|
*
|
43
|
+
|
44
|
'
|
45
|
-
|
46
|
.
|
47
|
/
|
48
|
0
|
49
|
1
|
50
|
2
|
51
|
3
|
52
|
4
|
53
|
5
|
54
|
6
|
55
|
7
|
56
|
8
|
57
|
9
|
58
|
:
|
59
|
;
|
60
|
<
|
61
|
=
|
62
|
>
|
63
|
?
|
64
|
@
|
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
|
91
|
[
|
92
|
\
|
93
|
]
|
94
|
^
|
95
|
_
|
96
|
`
|
97
|
a
|
98
|
b
|
99
|
c
|
100
|
d
|
101
|
e
|
102
|
f
|
103
|
g
|
104
|
h
|
105
|
i
|
106
|
j
|
107
|
k
|
108
|
l
|
109
|
m
|
110
|
n
|
111
|
o
|
112
|
p
|
113
|
q
|
114
|
r
|
115
|
s
|
116
|
t
|
117
|
u
|
118
|
v
|
119
|
w
|
120
|
x
|
121
|
y
|
122
|
z
|
123
|
{
|
124
|
|
|
125
|
}
|
126
|
~
|