如何使用程序控制微信发送消息

news2024/11/16 18:42:50

简介

使用杨中科老师的nuget包NetAutoGUI,控制微信给指定用户发送消息,如果想下面视频一样使用此功能用来轰炸朋友,可以直接跳到最后一节,或者直接下载我的打包好的程序集

【免费】控制微信发送消息的程序资源-CSDN文库

微信轰炸

安装nuget包

我们使用杨中科老师封装好的nuget包

NuGet Gallery | NetAutoGUI.Windows 1.0.11

🍀首先我们创建一个控制台项目,然后右键项目,选择属性,将目标os设置为windows

🍀 然后通过下面命令nuget安装nuget包

NuGet\Install-Package NetAutoGUI.Windows -Version 1.0.11

或者直接在nuget包管理器中搜索NetAutoGUI.Windows

🍀注意如果没有设置好面向操作系统为windows则会报下面异常

🍀如果使用的工具是Rider,同理右键项目=>设置 选择Target framework为windows版本

基于截图对页面就行模糊匹配

🍀首先将右下角的微信图标截取下来

🍀截取下来的图标,保存到当前项目下,注意要设置为复制到输出目录,不然启动项目的时候会找不到图片报错

代码解读

🍀查看当前有没有title为微信的应用在任务栏中

Window? w = GUI.Application.FindWindowByTitle("微信");

🍀如果w为null,则看系统托盘有没有微信图标wx_icon(也就是刚刚截图的图标),有的话通过GUI.Mouse来双击打开

        if (w == null)
        {
            //在屏幕上寻找此元素
            var rectWiIcon = GUI.Screenshot.LocateOnScreen("wx_icon.png");
            if (rectWiIcon == null)
            {
                Console.WriteLine("微信托盘图标没找到!");
                return;
            }
            else
            {
                //通过找到图标的坐标点击图标打开微信
                GUI.Mouse.Click(rectWiIcon.X,rectWiIcon.Y);
                //然后重新获取程序
                w = GUI.Application.WaitForWindowByTitle("微信");
            }
        }

 🍀如果w不为null,那么直接通过w.Activate()打开微信窗口。

        else
        {
            w.Activate();
        }

🍀同理,我们将微信搜索图标也截取下来

 🍀然后通过下面代码,找到该图标,搜索微信团队,再模拟按键敲击回车发送消息过去

w.WaitAndClick("shousuo.png",0.9);
GUI.Keyboard.Write("微信团队");
//输入文字后等待个500毫秒再按回车,不然微信反应不过来
Thread.Sleep(500);
GUI.Keyboard.Press(VirtualKeyCode.RETURN);

Thread.Sleep(500);
GUI.Keyboard.Write("发送的内容");
//模拟回车发送消息
GUI.Keyboard.Press(VirtualKeyCode.RETURN);

🐳整体代码如下 

class Program
{
    public static void Main(string[] args)
    {
        Window? w = GUI.Application.FindWindowByTitle("微信");
        if (w == null)
        {
            //在屏幕上寻找此元素
            var rectWiIcon = GUI.Screenshot.LocateOnScreen("wx_icon.png", 0.6);
            if (rectWiIcon == null)
            {
                Console.WriteLine("微信托盘图标没找到!");
                return;
            }
            else
            {
                //通过找到图标的坐标点击图标打开微信
                GUI.Mouse.Click(rectWiIcon.X, rectWiIcon.Y);
                //然后重新获取程序
                w = GUI.Application.WaitForWindowByTitle("微信");
            }
        }
        else
        {
            w.Activate();
        }
        
        w.WaitAndClick("shousuo.png",0.9);
        GUI.Keyboard.Write("微信团队");
        //输入文字后等待个500毫秒再按回车,不然微信反应不过来
        Thread.Sleep(500);
        GUI.Keyboard.Press(VirtualKeyCode.RETURN);
        
        Thread.Sleep(500);
        GUI.Keyboard.Write("发送的内容");
        //模拟回车发送消息
        GUI.Keyboard.Press(VirtualKeyCode.RETURN);
    }
}

 恶搞轰炸

学废了,接下来我们来干点坏事。经过测试,如果用到截屏对窗口进行匹配的话,有可能会出现匹配出错的情况,并且搜索需要等待微信反应时间,我们将代码简化一下。直接实现定位到好基友的消息页面,然后跑程序轰炸他

class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("请输入你要轰炸的次数!然后按下回车");
        int count = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("请输入你要发送的内容!然后按下回车");
        string path = Console.ReadLine();

        Window? w = GUI.Application.FindWindowByTitle("微信");

        if (w == null)
        {
            //在屏幕上寻找此元素

            Console.WriteLine("先打开微信");
            return;
        }
        w.Activate();

        for (int i = 0; i < count; i++)
        {
            GUI.Keyboard.Write(path);
            GUI.Keyboard.KeyDown(VirtualKeyCode.RETURN);
        }
    }
}

 效果演示

微信轰炸

如果本地没有c#的开发环境,也可以下载我打包好的程序集

【免费】控制微信发送消息的程序资源-CSDN文库

解压后双击.exe文件执行项目

然后在弹窗中输入次数和内容就会自动执行程序了

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

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

相关文章

复合机器人作为一种新型的智能制造装备高效、精准和灵活的生产方式

随着汽车制造业的快速发展&#xff0c;对于高效、精准和灵活的生产方式需求日益增强。复合机器人作为一种新型的智能制造装备&#xff0c;以其独特的优势在汽车制造中发挥着越来越重要的作用。因此&#xff0c;富唯智能顺应时代的发展趋势&#xff0c;研发出了ICR系列的复合机器…

定岗定编:国有电力企业精细化管理改革方案

某发电厂作为神华国华集团下属单位&#xff0c;位于环渤海地区&#xff0c;成立于20世纪90年代&#xff0c;是国家“八五”、“九五”期间重点电力建设项目。在建立之初&#xff0c;公司引入了两台800MW超临界燃煤机组&#xff0c;总投资超过100亿元&#xff0c;近年开展了二期…

RTSP协议实现发送ACC音频数据

一.AAC音频格式介绍 AAC音频格式&#xff1a;Advanced Audio Coding&#xff08;高级音频解码&#xff09;&#xff0c;是一种由MPEG—4标准定义的有损音频压缩格式。音频压缩编码的输出码流&#xff0c;以音频帧的形式存在。每个音频帧包含若干个音频采样的压缩数据&#xff0…

Butler for Mac 菜单栏快速启动工具

Butler介绍 Butler for Mac版是一款Mac菜单栏快速启动工具&#xff0c;主要用于加速您的工作流程并简化您的日常任务。 借助Butler的帮助&#xff0c;您可以控制iTunes&#xff0c;启动应用程序&#xff0c;打开文件和文档&#xff0c;在用户之间切换&#xff0c;搜索网络等等…

鸿蒙Harmony-列表组件(List)详解

不要和别人比生活&#xff0c;每个人阶段不同&#xff0c;追求不同&#xff0c;活法自然也不同。只要今天的你能比昨天的你快乐一点点&#xff0c;那你就是自己人生赢家。 目录 一&#xff0c;定义 二&#xff0c;布局与约束 2.1 布局 2.2 约束 三&#xff0c;开发布局 3.1 设置…

基于Python的汽车信息爬取与可视化分析系统

介绍 这款汽车信息网站是基于多项技术和框架设计的全面的汽车信息展示及查询系统。其中&#xff0c;采用了Python Django框架和Scrapy爬虫技术实现数据的抓取和处理&#xff0c;结合MySQL数据库进行数据存储和管理&#xff0c;利用Vue3、Element-Plus、ECharts以及Pinia等前端…

【大数据】Flink 详解(九):SQL 篇 Ⅱ

《Flink 详解》系列&#xff08;已完结&#xff09;&#xff0c;共包含以下 10 10 10 篇文章&#xff1a; 【大数据】Flink 详解&#xff08;一&#xff09;&#xff1a;基础篇【大数据】Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ【大数据】Flink 详解&…

Codeforces Round 920 (Div. 3)

Codeforces Round 920 (Div. 3) Codeforces Round 920 (Div. 3) A. Square 题意&#xff1a;随机给出正方形在平面坐标系上的四个顶点的坐标&#xff0c;求正方形的面积&#xff0c;正方形边与xy轴平行。 思路&#xff1a;因为正方形与坐标轴平行&#xff0c;所以找出相同的…

React Native 原生组件回调JS层方法和 JS 层调用原生组件的事件方法

一、原生组件回调 JS 层提供的事件方法 比如 TextInput 组件 onChangeText 属性&#xff0c;输入事件是发生在原生层的但是需要通知 JS 层发生了变化&#xff0c;并执行 JS 层的方法。 1、给原生组件添加一个按钮用于触发原生事件方法 在 XML 中添加一个按钮 为了方便让 Inf…

已解决:g++: error: unrecognized command line option ‘-Wnull-dereference‘

VS运行正常的c代码&#xff0c;出现错误&#xff1a; 正在执行任务: C:/Windows/System32/cmd.exe /d /c g -Wall -Wextra -Wpedantic -Wshadow -Wformat2 -Wcast-align -Wconversion -Wsign-conversion -Wnull-dereference -g3 -O0 -c e:\Desktop\C\hdu\1000.cpp -o .\build\…

保姆级ESP-IDF开发环境搭建

1. 手动安装工具链&#xff0c;命令行方式&#xff08;windows&#xff09; 1.1 下载离线安装器 进入乐鑫 ESP-IDF Windows Installer Download 下载页面&#xff0c;选择离线版本工具&#xff08;网络原因&#xff0c;安装过程中使用github下载会出问题&#xff09;。 1.2 使…

unity C#中使用ref、out区别和使用案例

文章目录 ref 关键字out 关键字 在Unity&#xff08;以及C#编程语言中&#xff09;&#xff0c; ref 和 out 都是用来传递参数的引用&#xff0c;这意味着它们允许函数修改实参变量&#xff0c;并且这些修改会反映到调用函数的地方。但它们之间确实存在一些关键区别和使用场景…

Flutter开发进阶之并发操作数据库

Flutter开发进阶之并发操作数据库 尽管 Flutter 本身不包含任何数据库功能&#xff0c;但可以使用各种第三方库和插件来在 Flutter 应用程序中实现数据库功能&#xff1b; 以下将使用sqflite作为例子&#xff0c;sqflite允许在 Flutter 应用程序中执行 SQL 查询&#xff0c;创…

【干货】深入剖析冒泡排序算法:原理、步骤与复杂度分析

导语&#xff1a; 排序算法是计算机科学中的重要基础知识&#xff0c;而冒泡排序是最简单、最基础的排序算法之一。虽然冒泡排序的效率相对较低&#xff0c;但它的实现简单易懂&#xff0c;是理解排序算法的入门之选。本文将深入剖析冒泡排序算法的原理、步骤以及时间复杂度分析…

vue 渲染数组,拖拽排序,渲染同一个数组拖拽排序不影响其他选中行状态

当我们能够设置单行状态改变的时候&#xff0c;那么肯定可以拿到选中的当前行的id或者下标index。 只要设定一个初始化值在拖拽开始的时候重新赋值&#xff0c;然后再处理选中状态的时候进行判断即可。 前期写的时候没有注意到这个问题&#xff0c;可以看这个文章。 在复测的时…

Keepalived 双机热备

本章主要内容&#xff1a; Keepalived 双机热备基础知识学会构建双机热备系统学会构建LVSHA 高可用群集 简介 在这个高度信息化的IT时代&#xff0c;企业的生产系统&#xff0c;业务运营&#xff0c;销售和支持&#xff0c;以及日常管理等环节越来越依赖于计算机和服务&#…

uboot工作原理介绍

uboot其实和电脑的BIOS是一个原理&#xff0c;它主要做两件事: &#xff08;1&#xff09;初始化硬件&#xff1b; &#xff08;2&#xff09;将系统文件&#xff08;或者说是内核&#xff09;从flash中读出来加载到DDR里面执行。 给大家解释下面几个问题&#xff1a; 为什么…

IDEA 中搭建 Spring Boot Maven 多模块项目 (父SpringBoot+子Maven)

第1步&#xff1a;新建一个SpringBoot 项目 作为 父工程 [Ref] 新建一个SpringBoot项目 删除无用的 .mvn 目录、 src 目录、 mvnw 及 mvnw.cmd 文件&#xff0c;最终只留 .gitignore 和 pom.xml 第2步&#xff1a;创建 子maven模块 第3步&#xff1a;整理 父 pom 文件 ① …

数据结构--排序

参考【算法】排序算法之希尔排序 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/122632213 1. 排序的定义 2. 插入排序 2.1 直接插入排序 在插入第i&#xff08;i>1)个记录时&#xff0c;前面的i-1个记录已经排好序 void insertSort(int r[],int n) {for(int i2;i<…

华为设备vlan下配置MSTP,STP选举

核心代码,不同实例&#xff0c;承载不同流量&#xff0c;为每个实例设置一个根网桥达到分流的效果 stp region-config //进入stp区域的设置 region-name R1 //区域命名为R1 instance 1 vlan 10 …