整理 | 小耕家的喵大仙
出品 | CSDN(ID:lichao19897314)
Q Q | 978124155
往期知识回顾:
👆 以上文章是以往对使用自动化技术操作微信的一些文章及案例!!!!
微信定时发送消息
(1)自动化程序在运行过程中应为依赖的主程序是微信,所以要对微信网络状态进行监控,如果发现微信处于断网状态的情况则自动化程序可以执行对应操作。
(2)实现思路,开启一个线程定时监控微信的网络状态面板是否出现。
因为是监控一类的操作需要用到BaseMonitor类
该类定义在微信UI自动化-监控微信进程运行状态 文章中
以下是监控网络变化的监控类
namespace OnlineRetailers.Extension.Page.UIAuto
{
/// <summary>
/// 监控微信UI是否链接网络
/// </summary>
public class UI_WX_NetWork_Monitor: BaseMonitor
{
public event EventHandler<NetWorkEventArgs> NetWorkEvent ;
public NetWorkStatus Status { get; private set; } = NetWorkStatus.UnKnow;
public override void Monitor()
{
if (MonitorStatus== MonitorStatus.Monitoring)
return;
SystemLog.Info("启动微信网络状态监听");
MonitorStatus = MonitorStatus.Monitoring;
Thread th = new Thread(new ThreadStart(() =>
{
while (MonitorStatus == MonitorStatus.Monitoring)
{
if (WXWin32.GetWeiXin() != IntPtr.Zero)
{
try
{
var netWork = UI_WX_Window.Current.Window.FindFirstByXPath("Pane[1]/Pane[2]/Text[2]");
if (netWork != null && netWork.Name.Contains("网络不可用"))
{
DoNetWork(NetWorkStatus.Error);
}
else
{
DoNetWork(NetWorkStatus.Ok);
}
}
catch (Exception ex)
{
SystemLog.Error(ex.StackTrace);
}
}
Thread.Sleep(1000);
}
ExecuteMonitorStop();
}));
th.Start();
}
private void DoNetWork(NetWorkStatus status)
{
if (Status == status)
return;
Status = status;
if (NetWorkEvent != null)
{
NetWorkEvent(this, new NetWorkEventArgs { Status=status});
}
}
public override void Break()
{
base.Break();
SystemLog.Info("关闭网络状态监听");
}
}
public class NetWorkEventArgs : EventArgs
{
public NetWorkStatus Status { get; set; }
}
public enum NetWorkStatus
{
UnKnow=0,
Ok = 1,
Error = 2
}
}
调用
public MainWindow()
{
UI_WX_NetWork_Monitor netWork = new UI_WX_NetWork_Monitor();
netWork.NetWorkEvent += NetWork_NetWorkEvent;
netWork.Monitor();
}
private void NetWork_NetWorkEvent(object sender, NetWorkEventArgs e)
{
if (e.Status == NetWorkStatus.Error)
{
//断网后的操作
}
if (e.Status == NetWorkStatus.Ok)
{
//网络正常的操作
}
}
因为文章所表达的意思可能无法满足每一位阅读需求,需要源码或者支持请联系作者QQ 978124155