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("结束");
}

参考

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值