当前位置: 首页 > news >正文

c#模拟鼠标点击左键

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);
        }

    }
}

相关文章:

  • 【开源项目】图床工具Easyimage保姆级搭建
  • Windows编程:用 VS2019 编写C语言程序
  • 103-《茶靡花》
  • rtsp rtmp 跟 http 区别
  • Flask框架入门完全指南
  • 传统数组 vs vector和list
  • 【Python爬虫(5)】HTTP协议:Python爬虫的基石
  • Python版本管理器之Pyenv-win介绍与安装
  • DeepSeek笔记(二):DeepSeek局域网访问
  • 宝塔面板开始ssl后,使用域名访问不了后台管理
  • JSON入门略要
  • Lua 数据库访问
  • 30个常用的DEEPSEEK提示词
  • “单击以重新设置PIN”的解决方案
  • 算法-链表篇04-两两交换链表中的节点
  • DeepSeek告别服务器繁忙
  • C++游戏开发流程图
  • 基于Spring Boot+Vue的宠物服务管理系统(源码+文档)
  • Java里ArrayList和LinkedList有什么区别?
  • python的pass
  • 公元1058年:柳永词为什么时好时坏?
  • 秦洪看盘|指标股发力,A股渐有突破态势
  • 美国和沙特签署上千亿美元军售协议
  • “降息潮”延续,多家民营银行下调存款利率
  • 大外交|中美联合声明拉升全球股市,专家:中美相向而行为世界提供确定性
  • 巴基斯坦全国航班仍持续延误或取消