咱们须要用到的mouse_event函数,位于user32.dll这个库文件里面,因此咱们要先声明引用。html
[System.Runtime.InteropServices.DllImport("user32")] private static extern int mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); //移动鼠标 const int MOUSEEVENTF_MOVE = 0x0001; //模拟鼠标左键按下 const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键抬起 const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标右键按下 const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键抬起 const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标中键按下 const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键抬起 const int MOUSEEVENTF_MIDDLEUP = 0x0040; //标示是否采用绝对坐标 const int MOUSEEVENTF_ABSOLUTE = 0x8000; //模拟鼠标滚轮滚动操做,必须配合dwData参数 const int MOUSEEVENTF_WHEEL = 0x0800; public static void TestMoveMouse() { Console.WriteLine("模拟鼠标移动5个像素点。"); //mouse_event(MOUSEEVENTF_MOVE, 50, 50, 0, 0);//相对当前鼠标位置x轴和y轴分别移动50像素 mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -20, 0);//鼠标滚动,使界面向下滚动20的高度 }
dwFlags:标志位集,指定点击按钮和鼠标动做的多种状况。此参数里的各位能够是下列值的任何合理组合:函数
- MOUSEEVENTF_ABSOLUTE:代表参数dX,dy含有规范化的绝对坐标。若是不设置此位,参数含有相对数据:相对于上次位置的改动位置。此标志可被设置,也可不设置,无论鼠标的类型或与系统相连的相似于鼠标的设备的类型如何。要获得关于相对鼠标动做的信息,参见下面备注部分。
- MOUSEEVENTF_MOVE:代表发生移动。
- MOUSEEVENTF_LEFTDOWN:代表接按下鼠标左键。
- MOUSEEVENTF_LEFTUP:代表松开鼠标左键。
- MOUSEEVENTF_RIGHTDOWN:代表按下鼠标右键。
- MOUSEEVENTF_RIGHTUP:代表松开鼠标右键。
- MOUSEEVENTF_MIDDLEDOWN:代表按下鼠标中键。
- MOUSEEVENTF_MIDDLEUP:代表松开鼠标中键。
- MOUSEEVENTF_WHEEL:在Windows NT中若是鼠标有一个轮,代表鼠标轮被移动。移动的数量由dwData给出。
dx:指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据做为鼠标的实际X坐标;给出的相对数据做为移动的mickeys数。一个mickey表示鼠标移动的数量,代表鼠标已经移动。
dy:指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据做为鼠标的实际y坐标,给出的相对数据做为移动的mickeys数。
dwData:若是dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值代表鼠标轮向前转动,即远离用户的方向;负值代表鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。若是dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。
dwExtralnfo:指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来得到此附加信息。
返回值:无。post
程序中咱们直接调用mouse_event函数就能够了 mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0);spa
一、这里是鼠标左键按下和松开两个事件的组合即一次单击: mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )code
二、模拟鼠标右键单击事件: mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 )htm
三、两次连续的鼠标左键单击事件 构成一次鼠标双击事件: mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )blog
四、使用绝对坐标:mouse_event (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0)事件
须要说明的是,若是没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,若是dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点。ci
5、直接设定绝对坐标并单击 mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0); 其中X,Y分别是你要点击的点的横坐标和纵坐标get
键盘模拟用 Keybd_event函数
Keybd_event能触发一个按键事 件,也就是说回产生一个WM_KEYDOWN或WM_KEYUP消息。固然也能够用产生这两个消息来模拟按键,可是没有直接用这个函数方便。
函数原型:void keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, ULONG_PTR dwExtraInfo );
参数说明:
bVk 虚拟按键代码编号
bScan 按键的的硬件扫描代码
dwFlags 控制功能操做的各个方面;KEYEVENTF_EXTENDEDKEY:若是指定,扫描代码前面有一个前缀字节,其值为0xE0;KEYEVENTF_KEYUP:若是指定,则抬起按键。
dwExtraInfo 按键动做的附加信息
返回值:无返回值
Keybd_event共有四个参数:
第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab。
第二个参数为扫描码,通常不用 设置,用0代替就行。
第三个参数为选项标志,若是为keydown则置0便可,若是为keyup则设成“KEYEVENTF_KEYUP”,
第四个参数一 般也是置0便可。例如:实现模拟按下i键,其中的 0x49 表示 i 键的虚拟键值。
键盘键码对照表:
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
按键 |
键码 |
A |
65 |
6(数字键盘) |
102 |
; |
59 |
: |
58 |
B |
66 |
7(数字键盘) |
103 |
= |
61 |
+ |
43 |
C |
67 |
8(数字键盘) |
104 |
, |
44 |
< |
60 |
D |
68 |
9(数字键盘) |
105 |
- |
45 |
_ |
95 |
E |
69 |
* |
106 |
. |
46 |
> |
62 |
F |
70 |
! |
33 |
/ |
47 |
? |
63 |
G |
71 |
Enter |
13 |
` |
96 |
~ |
126 |
H |
72 |
@ |
64 |
[ |
91 |
{ |
123 |
I |
73 |
# |
35 |
\ |
92 |
| |
124 |
J |
74 |
$ |
36 |
} |
125 |
] |
93 |
K |
75 |
F1 |
112 |
a |
97 |
b |
98 |
L |
76 |
F2 |
113 |
c |
99 |
d |
100 |
M |
77 |
F3 |
114 |
e |
101 |
f |
102 |
N |
78 |
F4 |
115 |
g |
103 |
h |
104 |
O |
79 |
F5 |
116 |
i |
105 |
j |
106 |
P |
80 |
F6 |
117 |
k |
107 |
l |
108 |
Q |
81 |
F7 |
118 |
m |
109 |
n |
110 |
R |
82 |
F8 |
119 |
o |
111 |
p |
112 |
S |
83 |
F9 |
120 |
q |
113 |
r |
114 |
T |
84 |
F10 |
121 |
s |
115 |
t |
116 |
U |
85 |
F11 |
122 |
u |
117 |
v |
118 |
V |
86 |
F12 |
123 |
w |
119 |
x |
120 |
W |
87 |
Backspace |
8 |
y |
121 |
z |
122 |
X |
88 |
Tab |
9 |
0(数字键盘) |
96 |
Up Arrow |
38 |
Y |
89 |
Clear |
12 |
1(数字键盘) |
97 |
Right Arrow |
39 |
Z |
90 |
Shift |
16 |
2(数字键盘) |
98 |
Down Arrow |
40 |
0(小键盘) |
48 |
Control |
17 |
3(数字键盘) |
99 |
Insert |
45 |
1(小键盘) |
49 |
Alt |
18 |
4(数字键盘) |
100 |
Delete |
46 |
2(小键盘) |
50 |
Cap Lock |
20 |
5(数字键盘) |
101 |
Num Lock |
144 |
3(小键盘) |
51 |
Esc |
27 |
2(数字键盘) |
98 |
Down Arrow |
40 |
4(小键盘) |
52 |
Spacebar |
32 |
3(数字键盘) |
99 |
Insert |
45 |
5(小键盘) |
53 |
Page Up |
33 |
4(数字键盘) |
100 |
Delete |
46 |
6(小键盘) |
54 |
Page Down |
34 |
5(数字键盘) |
101 |
Num Lock |
144 |
7(小键盘) |
55 |
End |
35 |
|
|||
8(小键盘) |
56 |
Home |
36 |
|
|||
9(小键盘) |
57 |
Left Arrow |
37 |
|