
此功能在user32.dll库文件中。我们可以在系统随附的目录C:\ WINDOWS \ system32(XP系统)中找到该文件。让我们以C#直接调用此文件中的API为例来说明如何执行鼠标操作。首先,在我们的C#中声明引用。如果它是基于From的程序,则在您的From类中写入此声明的位置。
[System.Runtime.InteropServices.DllImport(“ user32”)]
私有静态外部int mouse_event(int dwFlags,int dx,int dy,int cButton,int dwExtraInfo);
参数含义
dwFlags Long,下表中的标志之一或它们的组合
dx,dy Long,根据MOUSEEVENTF_ABSOLUTE标志,指定x和y方向上的绝对位置或相对位置

cButtons长,不使用
dwExtraInfo Long,未使用
DwFlags常量含义
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函数。

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键的虚拟键值
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-337765-1.html
期待