C# keybd_event模拟对照表以及用法.
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
|
~
|
C# keybd_event模拟对照表以及用法.的更多相关文章
- C/C++使用keybd_event模拟键盘按键
#include <stdio.h> #include <Windows.h> /* 设置键盘大小写状态 big:为TRUE则切换大写状态,否则切换小写状态 */ VOID M ...
- Python win32api.keybd_event模拟键盘输入
win32api.keybd_event 该函数原型:keybd_event(bVk, bScan, dwFlags, dwExtraInfo) 第一个参数:虚拟键码(键盘键码对照表见附录): 第二个 ...
- keybd_event模拟键盘按键,mouse_event怎么用
从 模仿UP主,用Python实现一个弹幕控制的直播间! - 蛮三刀酱 - 博客园 (cnblogs.com) 知道了 PyAutoGUI: * Moving the mouse and clicki ...
- curl_multi_*模拟多线程异步用法
测试环境: PHP版本:php7.0.10 mysql版本:5.7.14 测试用例:循环插入两千行数据到数据库 public function test_syn($pc){ // $pc = trim ...
- 自己模拟的ftl 用法:
基类 public class Ftl_object_data_model { //三种基本属性 private boolean canRead=true;//是否能读取 ;//长度 private ...
- C# 模拟Windows键盘事件
发送键盘消息 [DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true) ...
- 键盘虚拟键值编码表 使用keybd_Event
键盘虚拟键值编码表 使用keybd_Event 模拟键盘输入首先要用到一个API函数:keybd_event. 我们是菜鸟,所以不必具体去理解它的详细用法,只要按以下方法使用即可了!呵呵! 模拟按键有 ...
- 如何用Delphi开发网游外挂
1.动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标.键盘等,使游戏里的人物进行流动或者攻击,最早以前的“石器”外挂就是这种方式.2.本地修改式,这种外挂跟传统上的一些游戏修改器没有两样 ...
- Python基础系列讲解-自动控制windows桌面
原链接:https://zhuanlan.zhihu.com/p/73001806 在使用PC时与PC交互的主要途径是看屏幕显示.听声音,点击鼠标和敲键盘等等.在自动化办公的趋势下,繁琐的工作可以让程 ...
随机推荐
- js闭包和回调
1.闭包 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.闭包有三个特性: 1.函数嵌套函数; 2.函数内部可以引用外部的参数和变量; 3.参数 ...
- java中的继承Object
一个类,要么是直接继承Object,要么就是间接继承Object,如下: class A{ } class B extends A{ } B 是A的子类,A是Object的子类,所以B间接继承了Obj ...
- (Python )运算符
这一节,将学习运算符,主要是算术运算符和逻辑运算符 1.算术运算符 除法运算,整数/整数=整数,浮点数/整数=浮点数,整数/浮点数=浮点数: >>> 17/35>>> ...
- uploadify 上传遇到跨域问题
flash上传跨域,一般是加入crossdomain.xml 我用了别人的图片服务器,只能做此下策: //CURLFile 实现 $file = $_FILES['Filedata']['tmp_na ...
- linux 下 jdk+tomcat+mysql 的 jsp 环境搭建
JDK 在 linux 下安装 1. 把安装文件放在 /opt 下,并执行 [root@localhost opt]# ./jdk-1_5_0_06-linux-i586.bin 并 ...
- noip2015-day1-t2
题意:有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学.游戏开始时,每人都只知道自己的生日.之后每一轮中, ...
- js作用域和词法分析
都知道js中不存在类似于c++等语言的块级作用域,例如for循环中定义的变量,其实是属于当前对象下的属性,同一对象下可以随便访问.只有函数可以限定一个变量的作用范围,即函数才是变量的作用域. 对于函数 ...
- [转]oracle审计详解
http://blog.chinaunix.net/u2/66903/showart_2082884.html Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用 ...
- iOS 用代码+Xib搭建UI界面实例
1.背景 有些我们不能只用代码去构建界面,代码是万能的,你用其他方式可以实现的界面,用代码也一定能 实现,但是我们没必要这样做,有的时候用xib会是更好的选择,代码和xib的优劣地方我们得知道,为了 ...
- PHP如何连接Access数据库
PHP代码: <?php $connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" .realpath(" ...