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交互的主要途径是看屏幕显示.听声音,点击鼠标和敲键盘等等.在自动化办公的趋势下,繁琐的工作可以让程 ...
随机推荐
- three.js 之旅一
扯一段废话,当你遇到一个没人知道的问题时,你该怎么办? 问周围人,他们遇到这种情况怎么办.作为程序员,这种情况肯定时有发生,我们要学会寻找资源. Three.js的六个基本步骤 1.设 ...
- treeMap and treeSet
TreeSet:如果要对对象进行排序,对象类要实现Comparable接口! TreeMap:如果要对对象进行排序,对象类要实现Comparable接口! 下面是我自己写的小程序主要传输对象 publ ...
- 在ios下提示“@synthesize of ‘weak’ property is only allowed in ARC or GC mode”
现在的项目是手动内存管理,所以在引入第三方资源库时候,很多资源库更新以后都开始使用arc进行编码,这样就导致两种代码风格不一致,有的时候可能开发者也没有注意到这些问题,反正用的时候也没有报错,就直接使 ...
- php 获取代码执行时间和消耗的内存
做一些php性能测试的时候,要获取代码执行时间和消耗的内存,查了一下资料,发现php有自带的函数可以实现这个功能,具体实现代码如下: $t1 = microtime(true);// ... 执行代码 ...
- PHP ftp使用
本文章来总结几个利用php中的ftp功能来实现通过FTP上传文件,有需要学习的朋友可参考参考.ftp_get() 函数从 FTP 服务器上下载一个文件.若成功则返回 true,失败则返回 false. ...
- 【洛谷P1541】乌龟棋
四维dp #include<cstdio> #include<cstring> using namespace std; ; ],a,b,c,d,n,m; int max(in ...
- MySQL 半同步复制
在主库初次启动时,执行如下语句加载semisync_master插件: mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_m ...
- java环境配置总结
最近接触java,在环境配置上费了不少劲.总结一下: 1.首先安装jdk和Eclipse,jdk我安装的是1.6,Eclipse可以从官网下载:http://download.eclipse.org/ ...
- 使用MyBatis Generator自动创建代码
SSM框架--使用MyBatis Generator自动创建代码 1. 目录说明 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件, ...
- 解决Win7下打不开chm文件的方法
win7 无法打开chm操作如下:1,在命令行运行regsvr32 itss.dll2,在命令行运行regsvr32 hhctrl.ocx