
我们需要使用的mouse_event函数位于user32.dll库文件中,因此我们需要首先声明引用.

[System.Runtime.InteropServices.DllImport("user32")]
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, 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;


mouse_event(MOUSEEVENTF_MOVE,X,Y,0,0);
dwFlags: 标志位设置,它指定按钮单击和鼠标操作的各种情况. 此参数中的位可以是以下值的任何合理组合:
dx: 根据MOUSEEVENTF_ABSOLUTE的设置,指定自上次鼠标事件生成以来鼠标沿x轴的绝对位置或移动量. 给出的绝对数据是鼠标的实际X坐标;给出的相对数据是移动的米键数. 米奇代表鼠标的移动量,表示鼠标已移动.
dy: 指定鼠标沿y轴的绝对位置或自上一次鼠标事件发生以来的移动量,具体取决于MOUSEEVENTF_ABSOLUTE的设置. 给出的绝对数据是鼠标的实际y坐标,给出的相对数据是移动的米键数.

dwData: 如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标滚轮的移动量. 正值表示鼠标滚轮向前旋转,即远离用户;负值表示鼠标滚轮向后(即,向用户)旋转. 一轮命中定义为WHEEL_DELTA,即120.
如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应该为零.
dwExtralnfo: 指定与鼠标事件相关的其他32位值. 该应用程序调用函数GetMessageExtraInfo以获得此附加信息.
返回值: 无.

mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE,X * 65535 / Cx,Y * 65535 / Cy,0,0)
Cx是屏幕分辨率宽度
Cy是高屏幕分辨率
在程序中,我们可以直接调用mouse_event函数mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE,500,500,0,0);

1. 这是按下和释放鼠标左键的两个事件的组合,即单击一次: mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0)
2. 模拟鼠标右键单击事件: mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP,0,0,0,0)
3. 两个连续的鼠标左键单击事件构成一个鼠标双击事件: mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0)mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0)<
4. 使用绝对坐标MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE,500、500、0、0
应注意,如果不使用MOUSEEVENTF_ABSOLUTE,则该功能默认为相对于鼠标当前位置的点. 如果dx和dy用0、0表示,则此函数考虑当前鼠标所在的点. 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是您要单击的点的横坐标和纵坐标
Keybd_event()用于键盘仿真
Keybd_event可以触发一个按键事件,即,将生成WM_KEYDOWN或WM_KEYUP消息. 当然,这两个消息也可以用于模拟按键,但是直接使用此功能并不方便. Keybd_event总共有四个参数,第一个是键的虚拟键值,例如Enter键是vk_return,而tab键是vk_tab. 第二个参数是扫描代码,通常不需要设置它,只需使用0即可. 第三个参数是选项标志. 如果为keydown,则将其设置为0. 如果为keyup,则将其设置为“ KEYEVENTF_KEYUP”. 第四个参数通常设置为0. 使用以下代码模拟按下i键,其中49表示i键的虚拟键值:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-301864-1.html
雷军
我给大家说个高人