基于C#制作一个鼠标连点器

news2024/10/5 15:33:11

秒杀抢券、压枪换弹都是网上冲浪的基本操作,制作一个鼠标连点器,从此在互联网所向披靡。

  • 一、项目搭建
    • 1.1、创建
    • 1.2、界面设计
  • 二、功能实现
    • 2.1、类型库调用
    • 2.2、窗口句柄定义
    • 2.3、线程处理
    • 2.4、快捷键

一、项目搭建

1.1、创建

打开Visual Studio,右侧选择创建新项目。

在这里插入图片描述

搜索框输入winform,选择windows窗体应用,填写对应的保存路径点击下一步,创建成功后如下图。

在这里插入图片描述
在这里插入图片描述

1.2、界面设计

通过工具箱分别拖拽picbox、label、textbox、button等控件放到界面上,通过定义picbox的image属性导入图片素材。

在这里插入图片描述

文章是模拟压枪连续点击,所以找了一个手持火麒麟的图片,可以在窗体中间放一个靶心的图标。

在这里插入图片描述

定义一个变量接收用户在textbox中输入的数值,同时双击button控件,生成对应的click事件。

在这里插入图片描述

 	private void button1_Click(object sender, EventArgs e)
	{
	
	}

二、功能实现

2.1、类型库调用

使用DllImport调用User32.dll,user32.dll是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。

在这里插入图片描述

[DllImport("User32")]
public extern static void mouse_event(int dwFlags, int dx, int dy, int dwData, IntPtr dwExtraInfo);

[DllImport("User32")]
public extern static void SetCursorPos(int x, int y);

[DllImport("User32")]
public extern static bool GetCursorPos(out POINT p);

定义一个结构,用于存储当前鼠标的x轴以及y轴位置

在这里插入图片描述

 [StructLayout(LayoutKind.Sequential)]
 public struct POINT
 {
     public int X;
     public int Y;
 }

2.2、窗口句柄定义

定义热键的窗口的句柄,同时定义热键ID,标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效

 [DllImport("user32.dll")]
        public static extern bool RegisterHotKey(IntPtr wnd, int id, MODKEY mode, Keys vk);

        [DllImport("user32.dll")]
        public static extern bool UnregisterHotKey(IntPtr wnd, int id);

        [Flags()]
        public enum MODKEY
        {
            None = 0,
            ALT = 0x0001,
            CTRL = 0x0002,
            SHIFT = 0x0004,
            WIN = 0x0008,
        }

        private NotifyIcon notifyIcon = null;

        public enum MouseEventFlags
        {
            Move = 0x0001,
            LeftDown = 0x0002,
            LeftUp = 0x0004,
            RightDown = 0x0008,
            RightUp = 0x0010,
            MiddleDown = 0x0020,
            MiddleUp = 0x0040,
            Wheel = 0x0800,
            Absolute = 0x8000
        }

2.3、线程处理

在用户点击的时候需要同步在界面上显示当前点击了多少次以及一些特效,这里需要通过线程进行处理。

在这里插入图片描述

   private void button1_Click(object sender, EventArgs e)
        {
            // 启动新线程执行循环操作
            Thread thread = new Thread(new ThreadStart(Loop));
            thread.Start();
        }

使用 Invoke 方法将 Label 的 Text 属性设置为当前的值

在这里插入图片描述

private void Loop()
   {
       int count = Convert.ToInt32(this.textBox1.Text);
       for (int i = 0; i < count; i++)
       {
           // 使用 Invoke 方法将 Label 的 Text 属性设置为当前的值
           this.Invoke(new Action(() =>
           {
               label1.Text = "已模拟点击鼠标点击次数:"+i.ToString();
           }));
           Thread.Sleep(1); // 模拟耗时操作
       }
   }
## 2.4、窗体最小化

实例化一个NotifyIcon对象,将主窗体隐藏的同时放到后台任务运行

在这里插入图片描述

//隐藏主窗体  
this.Hide();

//实例化一个NotifyIcon对象  
notifyIcon = new NotifyIcon();
//托盘图标气泡显示的内容  
notifyIcon.BalloonTipText = "正在后台运行";
//托盘图标显示的内容  
notifyIcon.Text = "鼠标自动点击器";
//注意:下面的路径可以是绝对路径、相对路径。但是需要注意的是:文件必须是一个.ico格式  
//notifyIcon.Icon = new System.Drawing.Icon("F:/renjiashuo/program/AutoClickMouse/AutoClickMouse/mouse.ico");
ComponentResourceManager resources = new ComponentResourceManager(typeof(AutoClickMouseLeftButton));
notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
//true表示在托盘区可见,false表示在托盘区不可见  
notifyIcon.Visible = true;
//气泡显示的时间(单位是毫秒)  
notifyIcon.ShowBalloonTip(5000);
notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(notifyIcon_MouseClick);

2.4、快捷键

软件最小化后,可以设置不同的快捷键设置它的启动或者停止,通过获取windows消息的回调进行实现。

在这里插入图片描述

  protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x0312)
            {
                switch (m.WParam.ToInt32())
                {
                    case 10:
                        this.BT_Start_Click(null,null);
                        break;
                    case 11:
                        this.BT_Stop_Click(null, null);
                        break;
                    default:
                        break;
                }
                return;
            }
            base.WndProc(ref m);
        }

文章内容仅做参考,切勿用于非法用途。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM体系结构和RAM的工程搭建、程序编写

目录 工程搭建 程序编写 带标志位的加法ADC ADCS 跳转指令B\BL 栈的应用->叶子函数的调用过程 栈的应用->非叶子函数的调用过程 异常中断产生指令 协处理器指令 伪操作 安装交叉编译工具 Makefile 宏定义 预编译指令 申请一个字的空间 .word 申请多个字节空间 嵌套编程 方…

如何查询期刊的SCI分区

好消息是CSDN AI写作助手上线了 我不用自己一个字一个字去写SCI分区是啥&#xff08;x&#xff09; 然而—— 麻了还是自己写吧&#xff0c; 在人工智能这条路上&#xff0c;CSDN还是需要努力。 简单来说&#xff0c;我们做科研、发文章&#xff0c;肯定是需要比较的 谁的…

记录一次Mysql死锁事件(由Insert与uniqueKey导致)

| 导语记录一次于2023年01月23日遇到的死锁问题。 1、基础 1.1 数据库隔离级别 1.1.1RC READ COMMITTED&#xff1a;只能读取已经提交的数据&#xff1b;此时&#xff1a;允许幻读和不可重复读&#xff0c;但不允许脏读&#xff0c;所以RC隔离级别要求解决脏读&#xff1b; 1.1…

Mac下通过Docker安装ElasticSearch集群

1、安装ElasticSearch 使用docker直接获取es镜像&#xff0c;执行命令docker pull elasticsearch:7.7.0 执行完成后&#xff0c;执行docker images即可看到上一步拉取的镜像。 2、创建数据挂在目录&#xff0c;以及配置ElasticSearch集群配置文件 创建数据文件挂载目录 mkdir -…

如何快速掌握Facebook运营+独立站运营基础?

在当今数字化时代&#xff0c;Facebook运营和独立站运营成为许多企业和个人创业者的关键战略。通过巧妙地结合这两个渠道&#xff0c;你可以有效地推广品牌、吸引目标受众并实现商业目标。本文将为你介绍如何快速掌握Facebook运营和独立站运营的基础知识&#xff0c;为你的业务…

微服务组件之Eureka

1、什么是Eureka&#xff0c;为什么要有Eureka 在传统的RPC远程调用中&#xff0c;管理每个服务于服务之间依赖关系复杂&#xff0c;管理复杂&#xff0c;所以需要使用服务治理&#xff0c;管理服务于服务之间依赖关系&#xff0c;可以实现服务调用、负载均衡、容错等&#xf…

一文搞懂KMP算法!!!

一文搞懂KMP算法&#xff01;&#xff01;&#xff01; &#x1f341;什么是KMP算法?&#x1f341;什么是 next() 数组 和 前缀表?前缀表有什么作用呢最长公共前后缀如何计算前缀表 &#x1f680; 构造next数组&#x1f680; 使用next数组来做匹配 &#x1f341;什么是KMP算法…

基于SSM+Vue的旅游资源网站设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

我们不打价格战!大众的倔强

2023年即将过半&#xff0c;在价格战席卷市场的同时&#xff0c;汽车制造商必须在市场份额、销量、营收以及利润之间做出权衡。“无论如何&#xff0c;大众都不会参与中国市场的价格战。“本周&#xff0c;大众汽车首席运营官Ralf Brandstaetter表示。 这家曾经在中国市场长期占…

留学生ChatGPT的正确打开方式及推荐使用方式

ChatGPT是什么? ChatGPT可以代写论文吗&#xff1f; ChatGPT推荐打开方式是什么&#xff1f; 今天就为大家梳理一下火爆全网的ChatGPT在留学中的正确打开方式&#xff0c;让同学可以更好地体验ChatGPT带来的便利。 什么是Chat GPT&#xff1f; ChatGPT&#xff08;Chat G…

Office Visio 2016安装

哈喽&#xff0c;大家好。今天一起学习的是Visio 2016的安装&#xff0c;这是一个绘制流程图的软件&#xff0c;用有效的绘图表达信息&#xff0c;比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件&#xff0c;便于IT和商务人员就复杂…

微信电脑版二维码( NATIVE 扫码支付)

后端代码 /** * 微信支付->扫码支付(模式二)->统一下单->微信二维码 * return */ PostMapping (value “/qrcode”) RequestLog(“微信支付二维码”) ApiOperation(“微信支付二维码”) AnonAccess public ResponseEntity wxpayPay(Validated RequestBody SysMember…

GreatSQL 8.0.32-24 今日发布

1.新增特性 1.1 SQL兼容性1.2 MGR1.3 性能优化1.4 安全 2.稳定性提升 3.其他调整 4.bug修复 5.GreatSQL VS MySQL 6.GreatSQL Release Notes GreatSQL 8.0.32-24版本发布&#xff0c;增加并行load data、&#xff08;逻辑 & CLONE&#xff09;备份加密、MGR读写节点可绑定…

MyBatis的创建和单表使用

前言&#xff1a; 之前我们了解到MySQL。接下来了解一下MyBatis&#xff0c;它不是一种数据库&#xff0c;那是什么呢和数据库有什么联系了&#xff1f; 目录 一&#xff1a;MyBatis的定义 二&#xff1a;MyBatis的创建 三&#xff1a;MyBatis的简单使用 3.1:准备工作 3.…

后端服务架构高性能设计之道

“N 高 N 可”&#xff0c;高性能、高并发、高可用、高可靠、可扩展、可维护、可用性等是后台开发耳熟能详的词了&#xff0c;它们中有些词在大部分情况下表达相近意思。本序列文章旨在探讨和总结后台架构设计中常用的技术和方法&#xff0c;并归纳成一套方法论。 前言 本文主…

视频采集到录制 - MP4生成

录制最终格式是MP4&#xff0c;视频流是采用H264编码流&#xff0c;音频是aac编码流 最终需要将两个流合并到一个文件里 采用的方案&#xff0c;是通过mp4v2的库&#xff0c;进行合并 原理很简单&#xff1a; 先创建文件&#xff0c;输入编码参数 需要创建视频流初始 也需要…

制造业在数字化时代如何应对挑战和机遇?

随着数字化时代的到来&#xff0c;制造业不可避免地会受到一些对应的挑战和机遇。以下是一些关键部分&#xff1a; 数字化转型&#xff1a;制造商已经采用数字技术来转变他们的运营。包括采用高级分析、自动化、人工智能 (AI) 和物联网 (IoT)。这些技术可以提高生产力、质量控制…

2.项目数仓、项目工具

项目数仓 数仓(Data Warehouse)是指用于存储和管理企业数据的一种大型数据库系统,以支持企业的决策分析活动。它采用了ETL(抽取、转化、加载)等技术来集成和清洗数据,并提供了灵活的查询和报表功能,使得分析师和决策者可以更好地理解企业的业务情况和趋势。 项目工…

基于三相坐标系状态方程的感应电动机起动动态计算(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

DataGrip使用技巧总结

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…