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