C# 使用NetAutoGUI.Windows做软件自动化操作

.NET兼职社区
搭建开发环境

包名:NetAutoGUI 和 NetAutoGUI.Windows

安装NuGet包:

​ NuGet\Install-Package NetAutoGUI -Version 1.0.9

​ NuGet\Install-Package NetAutoGUI.Windows -Version 1.0.9

如果安装失败则需要设置目标框架为windows
在这里插入图片描述

在本指南中,我们将详细解析如何使用NetAutoGUI库来实现对微信应用的自动化控制,包括查找并激活微信窗口、自动识别并点击屏幕图标、以及定时发送消息等功能。以下是对代码的逐段解析与说明:

引入命名空间

using NetAutoGUI;

NetAutoGUI是核心库,提供了自动化操作桌面应用程序所需的全部功能。

主函数定义

void Main()
{
    ...
}

主函数Main()是程序的入口点,所有的自动化逻辑都在这里展开。

检测并激活微信窗口

Window? wind = GUI.Application.FindWindowByTitle("微信");
if (null == wind)
{
    Rectangle? rectWXIcon = GUI.Screenshot.LocateOnScreen(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "images", "wechaticon.png"));
    if (null == rectWXIcon)
    {
        Console.WriteLine("图标未找到!");
        return;
    }
    GUI.Mouse.Click(rectWXIcon.X, rectWXIcon.Y);
    wind = GUI.Application.WaitForWindowByTitle("微信");
    wind?.Activate();
}
else 
{
    wind.Activate();
}

首先尝试通过标题"微信"查找并激活微信窗口。如果窗口不存在,通过LocateOnScreen方法定位屏幕上的微信图标位置,并模拟鼠标点击。之后,等待并激活微信窗口。

定时发送消息

bool active = true;
Task.Run(async () =>
{
    while (active)
    {
        wind?.WaitAndClick(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "images", "search.png"));
        GUI.Keyboard.Write("boss");
        await Task.Delay(1000);
        GUI.Keyboard.Press(VirtualKeyCode.RETURN);
        await Task.Delay(1000);
        GUI.Keyboard.Write($"定时发送 北京时间:{DateTime.Now}");
        await Task.Delay(1000);
        GUI.Keyboard.Press(VirtualKeyCode.RETURN);
        await Task.Delay(5000);
    }
});

在异步任务中,循环执行搜索好友并发送带有当前时间的消息。每个操作之间都有延迟,以模仿人类的操作速度,避免被系统或应用识别为自动化行为。

控制自动化流程

Console.WriteLine("请输入:");
string input = Console.ReadLine();
if (input == "1")
{
    active = false;
}
Console.WriteLine("结束");

通过控制台输入,可以控制是否继续执行自动化任务。当输入为"1"时,停止消息发送循环,结束自动化流程。

总结
通过上述步骤,我们不仅实现了对微信窗口的查找、激活,还实现了基于时间间隔的自动化消息发送。NetAutoGUI库的强大之处在于它提供了丰富的API,使得复杂的自动化操作变得简单且高效。无论是个人自动化需求,还是企业级自动化解决方案,NetAutoGUI都是一个值得信赖的选择。

整体代码:


using NetAutoGUI;

Main();
void Main() {
    Console.WriteLine();
    Window? wind = GUI.Application.FindWindowByTitle("微信");
    if (null == wind)
    {
        //如果微信未找到   就找到屏幕中的微信图标 点击   他会自动识别图片在屏幕中的x y 坐标
        Rectangle? rectWXIcon = GUI.Screenshot.LocateOnScreen(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "images", "wechaticon.png"));
        if (null == rectWXIcon)
        {
            Console.WriteLine("图标未找到!");
            return;
        }
        GUI.Mouse.Click(rectWXIcon.X, rectWXIcon.Y);
        wind = GUI.Application.WaitForWindowByTitle("微信");
        wind?.Activate();
    }
    else 
    {
        wind.Activate(); //激活窗口
    }

    bool falsge = true;
    Task.Run(async () =>
    {

        while (falsge) {
            wind?.WaitAndClick(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "images", "serch.png"));//点击搜索
            GUI.Keyboard.Write("小丫头");//输入文本
            await Task.Delay(1000);
            GUI.Keyboard.Press(VirtualKeyCode.RETURN);//回车
            await  Task.Delay(1000);
            GUI.Keyboard.Write($"定时发送 北京时间:{DateTime.Now}");//输入文本
            await Task.Delay(1000);
            GUI.Keyboard.Press(VirtualKeyCode.RETURN);//回车发送
            await Task.Delay(5000);
        }

    });
    Console.WriteLine("请输入:");
    string s = Console.ReadLine();
    if (s=="1")
    {
        falsge = false;
    }
    Console.WriteLine("结束");
}

参考

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型日报|4 篇必读的大模型论文

大家好,今日必读的大模型论文来啦! 1.ChatGLM 技术报告:从 GLM-130B 到 GLM-4 AII Tools GLM 技术团队介绍了 ChatGLM,这是一个不断发展的大语言模型系列。本报告主要关注 GLM-4 语言系列,包括 GLM-4、GLM-4-Air 和 …

【中霖教育怎么样】二建审核是考前审核还是考后审核?

在二级建造师的报名过程中,考生需经过严格的资格审核,有些地区分为考前审核,该审核分为考前和考后两个阶段。 考前审核: 在考试前,对每位考生的报名条件进行审查,只有符合规定条件的申请者才可参加二级建…

2004年下半年软件设计师【下午题】试题及答案

文章目录 2004年下半年软件设计师下午题--试题2004年下半年软件设计师下午题--答案2004年下半年软件设计师下午题–试题

Flutter TIM 项目配置

目录 1. 设计说明 2. 参考资料索引 Flutter SDK 服务端 Rest API 腾讯后台 其他 3. TIM 整体架构 第一部分:APP 端 第二部分:腾讯服务器 第三部分:三方服务 第四部分:你自己的服务器 4. TIM SDK 集成 TUIK 含 UI 集成…

Windows清理C盘的4类方法【新手小白专用】

一、系统清理法 1.磁盘清理 【Win R】启动命令提示符,输入【cleanmgr】,选择打开C盘,勾选要清理的文件 一般大的文件是【临时文件和下载的程序文件】 2.存储清理(1) 打开【设置】-【系统】-【存储】-【配置存储感知或立即运行…

第11章 测试代码

第11章 测试代码 11.1 测试函数11.1.1 单元测试和测试用例11.1.2 可通过的测试11.1.3 未通过的测试11.1.4 测试未通过时怎么办11.1.5 添加新测试 11.2 测试类11.2.1 各种断言方法11.2.2 一个要测试的类11.2.3 测试 AnonymousSurvey 类11.2.4 11.1 测试函数 11.1.1 单元测试和测…

34、shell数组+正则表达式

0、课前补充 jiafa () { result$(echo " $1 $2 " | bc ) print "%.2f\n" "$result" } ##保留小数点两位 薄弱加强点 a$(df -h | awk NR>1 {print $5} | tr -d %) echo "$a"一、数组 1.1、定义 数组的定义&am…

朝阳医院2018年销售数据 数据分析与可视化

代码及数据集下载传送门 数据分析与可视化-朝阳医院2018销售数据-ipynbcsv 实践内容 以朝阳医院2018年销售数据为例,目的是了解朝阳医院在2018年里的销售情况,这就需要知道几个业务指标,本次的分析目标是从销售数据中分析出以下业务指标&am…

避雷!紧急停止投稿,毕业神刊Aging危险了,被数据库“On Hold“!

本周投稿推荐 SSCI • 中科院2区,6.0-7.0(录用友好) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.5-1.0(录用…

2004年上半年软件设计师【下午题】试题及答案

文章目录 2004年上半年软件设计师下午题--试题2004年上半年软件设计师下午题--答案2004年上半年软件设计师下午题–试题

部署RAC到单实例ADG(11G)

服务器信息 主库RAC环境信息 主库RAC基本环境 节点1 节点2 OS centos 7.9 centos 7.9 数据库版本 11.2.0.4 11.2.0.4 规格 1C4G 1C4G 主机名 racdb01 racdb02 public ip 192.168.40.135 192.168.40.145 vip 192.168.40.13 192.168.40.14 private ip 192…

netcore 生成验证码

安装依赖 Install-Package Lazy.Captcha.Core 注册服务 builder.Services.AddCaptcha(); 自定义注册服务 // 注册服务的时候增加配置 services.AddCaptcha(Configuration, option > {option.CaptchaType CaptchaType.WORD; // 验证码类型option.CodeLength 6; // 验证…

广州化工厂可燃气体报警器检定检验:安全生产新举措显成效

随着科技的不断发展,可燃气体报警器的检定检验技术也在不断进步。 广州的一些化工厂开始采用先进的智能检测系统和数据分析技术,对报警器的性能进行更加精准和全面的评估。 这些新技术不仅能够提高检定检验的效率和准确性,还能够为化工厂的…

Python测试框架--Allure

严格意义上讲 Allure 不算是测试框架,但是它是生成漂亮测试报告的开源工具,搭配 Pytest 测试框架食用更搭。 也就是说 Allure 是在 Pytest 执行完生成的测试数据的基础上,对测试数据进行处理统计,生成格式统一、美观的测试报告。 …

Java中OOP的概念及示例

Java中OOP的概念及示例 在本指南中,您将学习Java中的OOP概念。面向对象编程系统(OOP)是一种基于“对象”的编程概念。面向对象编程的主要目的是提高程序的可读性、灵活性和可维护性。 面向对象编程将数据及其行为集中在一个称为对象的实体中…

反射机制详解

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Java从入门到精通 ✨特色专栏&#xff…

XSS+CSRF组合拳

目录 简介 如何进行实战 进入后台创建一个新用户进行接口分析 构造注入代码 寻找XSS漏洞并注入 小结 简介 (案例中将使用cms靶场来进行演示) 在实战中CSRF利用条件十分苛刻,因为我们需要让受害者点击我们的恶意请求不是一件容易的事情…

企业为什么要进行数据资产管理工作:价值与案例剖析

在数字化浪潮席卷全球的今天,数据已经成为企业不可或缺的重要资产。数据资产管理,作为确保数据资产价值得以最大化利用的关键环节,正逐渐成为企业战略规划中的核心议题。本文将深入剖析企业进行数据资产管理工作的必要性,并结合实…

[YOLOv10:注意力机制的轻量化创新,MLCA在目标检测中的卓越表现]

本文改进:一种轻量级的Mixed Local Channel Attention (MLCA)模块,该模块考虑通道信息和空间信息,并结合局部信息和全局信息以提高网络的表达效果。 1.YOLOv10介绍 论文:[https://arxiv.org/pdf/2405.14458] 代码: https://gitcode.com/THU-MIG/yolov10?utm_source=csdn…