c#模拟鼠标点击左键

c#模拟鼠标点击左键,这里调用的是windows系统函数,

csharp 复制代码
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);
        }

    }
}
相关推荐
我好喜欢你~5 小时前
C#---StopWatch类
开发语言·c#
一阵没来由的风9 小时前
拒绝造轮子(C#篇)ZLG CAN卡驱动封装应用
c#·can·封装·zlg·基础封装·轮子
一枚小小程序员哈15 小时前
基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统
后端·c#·asp.net
Eternity_GQM16 小时前
【Word VBA Zotero 引用宏错误分析与改正指南】【解决[21–23]参考文献格式插入超链接问题】
开发语言·c#·word
cimeo21 小时前
【C 学习】06-算法&程序设计举例
c#
百锦再1 天前
.NET 的 WebApi 项目必要可配置项都有哪些?
java·开发语言·c#·.net·core·net
WYH2871 天前
C#控制台输入(Read()、ReadKey()和ReadLine())
开发语言·c#
hqwest1 天前
C#WPF实战出真汁06--【系统设置】--餐桌类型设置
c#·.net·wpf·布局·分页·命令·viewmodel
做一位快乐的码农2 天前
基于.net、C#、asp.net、vs的保护大自然网站的设计与实现
c#·asp.net·.net
DavieLau2 天前
C#项目WCF接口暴露调用及SOAP接口请求测试(Python版)
xml·服务器·开发语言·python·c#