手把手教你用C#写一个刷屏软件

2023-11-06

手把手教你用C#写一个刷屏轰炸软件

成品展示

在这里插入图片描述

环境准备

VS2019

新建项目

在这里插入图片描述
在这里插入图片描述打开界面绘制
在这里插入图片描述打开工具箱开始放置按钮标签以及文本框
在这里插入图片描述最后设计完成的效果
在这里插入图片描述
这里需要注意的是这里的每个按钮、文本框等空间都一一对应一个名字
在这里插入图片描述

程序思路

点击开始,把发送框的内容复制到剪切板中,然后点击需要刷屏的对象框然后定时的模拟按键CTRL + V + ENTER实现粘贴和发送操作。

设计的操作:点击开始按钮,设定定时器执行间隔时间,获取输入框内容添加到剪切板,开启定时器,开始执行官定时器执行函数:模拟键盘按下,判断发送次数,点击关闭按钮,定时器关闭。

程序部分

双击控件跳转到控件对应的槽函数,这里我们只需要写开始和暂停按钮的函数即可。(一定要做好注释方便别人也方便自己)
在这里插入图片描述在设计页面添加定时器控件,然后双击控件进入槽函数
在这里插入图片描述设置剪切板内容为编辑框输入的内容

 Clipboard.SetText(putsStr.Text);            // 复制要发送的内容到剪切板

设定定时器间隔执行时间:这里获取的是编辑框的间隔时间毫秒为单位

putsTimer.Interval = int.Parse(putsTime.Text);    // 设定定时器时间间隔
putsTimer.Enabled = true;                         // 打开定时器
putsTimer.Start();                                // 定时器开始工作

模拟键盘按下的函数:SendKeys是一个非常好用的函数下面分享一个适合收藏的表格

SendKeys.Send("^{V}");	//模拟ctrl+v
SendKeys.Send("{ENTER}");//模拟enter

在这里插入图片描述关闭定时器

putsTimer.Enabled = false;                       //关闭定时器
putsTimer.Stop();                                //定时器停止工作

这里我单独写了一个函数用于控制两个按钮的可用控制以及颜色区分

 // 按钮可用控制
private void btnEnabled(bool btn1, bool btn2)
{
	if (btn1)
	{
		btnStart.Enabled = true;				//设定按钮可用状态
		btnStart.BackColor = Color.Green;       //设置按钮颜色
	}
	else
	{
		btnStart.Enabled = false;
		btnStart.BackColor = Color.Red;
	}
	if (btn2)
	{
		btnStop.Enabled = true;
		btnStop.BackColor = Color.Green;
	}
	else
	{
		btnStop.Enabled = false;
		btnStop.BackColor = Color.Red;
	}
}

设置图标以及标题
在这里插入图片描述在这里插入图片描述在这里插入图片描述

完整代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 
{
    public partial class Form1 : Form
    {
        int Num = 0;                                                  // 发送次数控制
        public Form1()
        {
            InitializeComponent();
            // 初始化按钮状态颜色
            btnStart.BackColor = Color.Green;
            btnStop.BackColor = Color.Red;
        }
        // 按钮可用控制
        private void btnEnabled(bool btn1, bool btn2)
        {
            if (btn1)
            {
                btnStart.Enabled = true;
                btnStart.BackColor = Color.Green;       //设置按钮颜色
            }
            else
            {
                btnStart.Enabled = false;
                btnStart.BackColor = Color.Red;
            }
            if (btn2)
            {
                btnStop.Enabled = true;
                btnStop.BackColor = Color.Green;
            }
            else
            {
                btnStop.Enabled = false;
                btnStop.BackColor = Color.Red;
            }
        }
        //  开始按钮
        private void btnStart_Click(object sender, EventArgs e)
        {
            Clipboard.SetText(putsStr.Text);                          // 复制要发送的内容到剪切板
            System.Threading.Thread.Sleep(2500);               // 延时2500毫秒用于鼠标指向聊天框
            putsTimer.Interval = int.Parse(putsTime.Text);    // 设定定时器时间间隔
            putsTimer.Enabled = true;                                   // 打开定时器
            putsTimer.Start();                                                 // 定时器开始工作
            btnEnabled(false, true);                                       // 打开按钮2关闭按钮1
        }
        // 暂停按钮
        private void btnStop_Click(object sender, EventArgs e)
        {
            putsTimer.Enabled = false;                                //关闭定时器
            putsTimer.Stop();                                               //定时器停止工作
            btnEnabled(true, false);                                     // 打开按钮1关闭按钮2
            MessageBox.Show("发送了" + Num + "次");     // 提示
        }
        // 定时器执行函数
        private void putsTimer_Tick(object sender, EventArgs e)
        {
            Num++;                                                             //发送次数
            SendKeys.Send("^{V}");
            SendKeys.Send("{ENTER}");
            if( Num == int.Parse(putsNum.Text))
            {
                putsTimer.Enabled = false;                            //关闭定时器
                putsTimer.Stop();                                           //定时器停止工作
                btnEnabled(true, false);                                 // 打开按钮1关闭按钮2
                Num = 0;                                                       // 发送次数清零
            }
        }
    }
}

如果需要项目的完整工程可以私聊博主噢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你用C#写一个刷屏软件 的相关文章

随机推荐

  • C#调用Java后端的restful接口(传递多参数)

    由于工作中的需要 在C 的winform窗口中调用html前端页面 是用webbrowser实现 此处不多做概述 但是前端请求的接口是用Java编写的 在webbrowser中使用C 来请求Java后端的restful接口 此处是C win
  • 掌上生活服务器维护中,招行掌上生活登录不上

    由于换了手机号 招行掌上生活一直登不上 打了不下10个客服电话后 终于得到一套非常复杂可能有效尚未尝试的解决方案 怕等下忘了 赶紧先记录一下 那么这个方案复杂到什么程度呢 复杂到客服妹妹已经无法理解 只能一字不落地读给我听然后寄希望于我的程
  • 可信启动、安全启动:SGX、TrustZone、SecureEnclave

    最近在公众号上看到了一篇文章 算是又丰富了自己的安全方面的眼界 最近看公众号取代了小视频 知乎这些东西 以前是真的不喜欢碎片化的东西 看什么学什么总是要找到书籍 但是这样的做法太过的极端 因为有时候有些事是两面性的 比如像安全这方面 本来有
  • Java 华为真题-黄金宝箱最大值

    需求 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱子 每个箱子上面贴有一个数字 阿里巴巴念出一个咒语数字k k
  • New Bing/Bing AI一直提示未登录

    重新注册microsoft账号 任意邮箱均可 地区选US 期间必须一直挂着全局dl
  • 如何解决秒杀的性能问题和超卖的讨论

    一 秒杀带来了什么 秒杀或抢购活动一般会经过 预约 抢订单 支付 这3个大环节 而其中 抢订单 这个环节是最考验业务提供方的抗压能力的 抢订单环节一般会带来2个问题 1 高并发 比较火热的秒杀在线人数都是10w起的 如此之高的在线人数对于网
  • 树莓派无屏幕wifi ssh和vnc界面连接,手机ssh连接

    系统下载和系统烧写到SD卡 国内下载地址 下载zip解压 https mirrors tuna tsinghua edu cn raspberry pi os images raspios full armhf images raspios
  • 新技能 get —— Python 断点续传下载文件

    from urllib request import urlretrieve import sys import os prev reported download percent None 首先定义下载 hook 作为 urllib re
  • Elastic Search 相关度计算

    为了搞清楚elastic search背后是如何计算文档搜索时候的相关度 我决定自己做实验去探索 这篇博客讲得还不错 http blog csdn net dm vincent article details 42099063 而博客本身也
  • Flink Connection拒绝:localhost / 127.0.0.1:8081

    提交flink 任务报错 Exception Connection refused localhost 127 0 0 1 8081 at java util concurrent CompletableFuture encodeThrow
  • 给指定的元素添加水印

    let watermark desc 给指定的元素添加水印 params Object obj params1 String canvasId canvas元素 params2 String contentId canvas父容器元素 pa
  • TCP/IP为例数据封装与解封装过程

    一TCP IP数据封装过程 TCP IP数据封装分为5个步骤 在本文中我将按流程顺序介绍TCP IP的数据封装过程 应用层 应用层将需要传输的数据 如 文字 视频 图片 音频等 转换成能够被电脑识别的二进制数字也就是将数据翻译成设备能识别的
  • 单元测试学习笔记

    单元测试的一些好处 单元测试降低了Bug数量 防止过耦合的设计 已测试的代码更易于添加功能或修复Bug TDD 测试驱动开发策略 选择单元测试框架 单元测试命名 单元测试的艺术 书中推荐的测试命名规则 项目 创建一个名为 ProjectUn
  • 图像处理-目标检测、语义分割和实例分割的特点与区别

    目标检测 语义分割和实例分割是计算机视觉领域中常用的图像分析任务 它们在目标识别和场景理解方面发挥着重要作用 下面将介绍它们的特点和区别 1 目标检测 目标检测是识别图像中存在的物体并确定它们的位置 它通常通过在图像中绘制边界框来标记物体的
  • 统信UOS系统安装最最最详细教程,手把手教

    统信UOS系统安装最详细教程 一 背景意义 操作系统厂商很容易取得用户的各种敏感信息 你的身份 账户 通讯录 手机号那么多数据在一起 如果你用大数据分析 我们国家经济社会的这种活动情况其实都可以了解 统计的数字比统计部门的数字还准确 更快
  • 压缩感知之入门文献

    在搜索相关资料时 看到了一个不错的资源 入门级的介绍 给出了链接 有需要的可以去下载 如过实在有困难 可以留下地址 我会尽量一一恢复 https download csdn net download doumiji 3294118
  • spring boot学习1之main和tomcat启动及log日志

    写了个spring boot例子 的确是零配置 平时需要写个web例子测试之类的时候 用它还挺方便的 现在开发都搞微服务 api端之前都是dubbo或jesry 现在也可以用spring boot了 现在记录下spring boot的小例子
  • DHCP基础配置

    要求 1 DHCP Server0 0 0口使用接口DHCP进行分配IP 2 DHCP Server0 0 1口使用全局DHCP进行分配IP 3 各PC间均可以互通 需求分析 1 对GE 0 0 1接口 IP分配 2 进行配置全局地址池 3
  • 秒懂Python 赋值,浅拷贝,深拷贝

    直接赋值 对象的引用 别名 浅拷贝 copy 拷贝父对象 不会拷贝对象的内部的子对象 深拷贝 deepcopy copy模块的deepcopy方法 完全拷贝了父对象及其子对象 1 基础概念 在Python里 一切皆对象 完全的面向对象 1
  • 手把手教你用C#写一个刷屏软件

    手把手教你用C 写一个刷屏轰炸软件 成品展示 环境准备 新建项目 程序思路 程序部分 完整代码 成品展示 环境准备 VS2019 新建项目 打开界面绘制 打开工具箱开始放置按钮标签以及文本框 最后设计完成的效果 这里需要注意的是这里的每个按