c#模拟鼠标点击左键
- 其他
- 2025-09-08 21:48:01

c#模拟鼠标点击左键,这里调用的是windows系统函数,
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace WindowsFormsAppHalconJiaJuObjectDetection { /// <summary> /// 模拟鼠标点击 /// </summary> public class MyMouseClick { // 定义鼠标事件标志枚举 [Flags] public enum MouseEventFlags : uint { Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008, RightUp = 0x0010, MiddleDown = 0x0020, MiddleUp = 0x0040, XDown = 0x0080, XUp = 0x0100, Wheel = 0x0800, VirtualDesk = 0x4000, Absolute = 0x8000 } /// <summary> /// 移动鼠标到一个坐标 /// </summary> /// <param name="X"></param> /// <param name="Y"></param> /// <returns></returns> [DllImport("user32.dll")] public static extern bool SetCursorPos(int X, int Y); // 导入user32.dll中的mouse_event函数 [DllImport("user32.dll")] public static extern void mouse_event(MouseEventFlags flags, int dx, int dy, uint data, UIntPtr extraInfo); //获取当前鼠标坐标, 导入user32.dll中的GetCursorPos函数 [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetCursorPos(out POINT lpPoint); // 定义POINT结构体 [StructLayout(LayoutKind.Sequential)] public struct POINT { public int X; public int Y; } /// <summary> /// 点击鼠标左键 /// </summary> /// <param name="x">坐标x</param> /// <param name="y">坐标y</param> public static void MouseLeftClick(int x,int y) { //移动鼠标到一个坐标 SetCursorPos(x,y); //鼠标左键按下 mouse_event(MouseEventFlags.LeftDown, 0, 0, 0, UIntPtr.Zero); //左键释放 mouse_event(MouseEventFlags.LeftUp, 0, 0, 0, UIntPtr.Zero); } /// <summary> /// 双击鼠标左键 /// </summary> /// <param name="x"></param> /// <param name="y"></param> public static void MouseDoubleLeftClick(int x, int y) { MouseLeftClick(x,y); MouseLeftClick(x, y); } } }c#模拟鼠标点击左键由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“c#模拟鼠标点击左键”