Windows下C#模拟鼠标点击
|
admin
2021年1月29日 16:16
本文热度 2597
|
c#模拟鼠标点击
需要引用的dll
C#本身带的类库中没有关于鼠标操作的函数库,需要引用微软的dll,在visual studio中使用 nuget添加 mshtml 即可(Microsoft.mshtml)
主要函数,及其方法参数释义
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace workhelper
{
class MouseHelper
{
[System.Runtime.InteropServices.DllImport("user32")]
public static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
//移动鼠标
public const int MOUSEEVENTF_MOVE = 0x0001;
//模拟鼠标左键按下
public const int MOUSEEVENTF_LEFTDOWN = 0x0002;
//模拟鼠标左键抬起
public const int MOUSEEVENTF_LEFTUP = 0x0004;
//模拟鼠标右键按下
public const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
//模拟鼠标右键抬起
public const int MOUSEEVENTF_RIGHTUP = 0x0010;
//模拟鼠标中键按下
public const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
//模拟鼠标中键抬起
public const int MOUSEEVENTF_MIDDLEUP = 0x0040;
//标示是否采用绝对坐标
public const int MOUSEEVENTF_ABSOLUTE = 0x8000;
[DllImport("user32.dll")]
public static extern bool SetCursorPos(int X, int Y);
}
}
SetCursorPos 函数
把光标移到屏幕的指定位置。(ps:是整个屏幕的坐标,相对于屏幕左上角的绝对位置)
参数
- X 指定光标的新的X坐标,以屏幕坐标表示。
- Y 指定光标的新的Y坐标,以屏幕坐标表示。 返回值
- 如果成功,返回非0值
- 如果失败,返回值是0
mouse_event 函数
综合鼠标移动和按钮点击。该方法包含鼠标左右移动及点击操作。 参数
- dwFlags 标志位集,指定点击按钮和鼠标动作的多种情况。此参数可以是下列值的某种组合:
VALUE | MEANING |
---|
MOUSEEVENTF_ABSOLUTE | dX和dY参数含有规范化的绝对坐标。如果不设置,这些参数含有相对数据:相对于上次位置的改动位置。此标志可设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,参见下面备注部分 |
MOUSEEVENTF_MOVE | 鼠标移动 |
MOUSEEVENTF_LEFTDOWN | 鼠标左键按下 |
MOUSEEVENTF_LEFTUP | 鼠标左键松开 |
MOUSEEVENTF_RIGHTDOWN | 鼠标右键按下 |
MOUSEEVENTF_RIGHTUP | 鼠标右键松开 |
MOUSEEVENTF_MIDDLEDOWN | 鼠标中键按下 |
MOUSEEVENTF_MIDDLEUP | 鼠标中键松开 |
MOUSEEVENTF_WHEEL | 鼠标轮被滚动,如果鼠标有一个滚轮。滚动的数量由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应为零。
- dwExtraInfo 指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息
使用示例
MouseHelper.SetCursorPos(Form1.point.X, Form1.point.Y);
MouseHelper.mouse_event(MouseHelper.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
MouseHelper.mouse_event(MouseHelper.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
该文章在 2021/1/29 16:16:57 编辑过