微信定时发送消息

(1)自动化程序在运行过程中应为依赖的主程序是微信,所以要对微信进程运行状态进行监控,如果发现微信处于运行状态的情况则自动化程序可以执行对应操作,微信应为人为或者意外导致关闭的情况则需要自动化程序马上响应做出对应的处理。

(2)实现思路,开启一个线程定时监控微信的窗体是否存在则可以实现

实现过程

首先定义一个WIN32 API的调用类,用来查找窗体。

   /// <summary>/// 发现窗口/// </summary>public class Win32_Find_Window{[DllImport("user32.dll", EntryPoint = "FindWindow")]private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);public static IntPtr Do(string className, string windowName){return FindWindow(className, windowName);}}

定义好一个查找微信窗体的调用类

    public class WXWin32{private static IntPtr currentWeixin = IntPtr.Zero;public static IntPtr GetWeiXin(){// if (currentWeixin == IntPtr.Zero)currentWeixin = Win32_Find_Window.Do("WeChatMainWndForPC", "微信");return currentWeixin;}}

定义一个监控的基类,因为后续很多监控都需要

 public class BaseMonitor : IMonitor{public BaseMonitor() {MonitorStatus = MonitorStatus.Stop;}public MonitorStatus MonitorStatus { get; protected set; }public event EventHandler<EventArgs> MonitorStop;public virtual void Break(){MonitorStatus = MonitorStatus.Stoping;}public virtual void Monitor(){}protected void ExecuteMonitorStop(){MonitorStatus = MonitorStatus.Stop;if (MonitorStop != null){MonitorStop(this, EventArgs.Empty);}}}public enum MonitorStatus{Monitoring = 0,Stoping = 1,Stop = 2}

定义监控类


namespace WpfApp1.UIAuto.Monitor
{public class UI_WX_Process_Monitor : BaseMonitor{public event EventHandler<ProcessEventArgs> ProcessEvent;public ProcessStatus Status { get; private set; } = ProcessStatus.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){DoProcess(ProcessStatus.Run);}else {DoProcess(ProcessStatus.Close);}Thread.Sleep(1000);}ExecuteMonitorStop();}));th.Start();}private void DoProcess(ProcessStatus status){if (Status == status)return;Status = status;if (ProcessEvent != null){ProcessEvent(this, new ProcessEventArgs { Status = status });}}public override void Break(){base.Break();SystemLog.Info("关闭微信是否打开监听");}}public class ProcessEventArgs : EventArgs{public ProcessStatus Status { get; set; }}public enum ProcessStatus{UnKnow = 0,Run = 1,Close= 2}
}

调用

   public MainWindow(){UI_WX_Process_Monitor process = new UI_WX_Process_Monitor();process.ProcessEvent += Process_ProcessEvent;process.Monitor();} private void Process_ProcessEvent(object sender, ProcessEventArgs e){if (e.Status == ProcessStatus.Close){//你的具体业务代码}}

(6)微信UI自动化-搜索指定联系人(C#)

(8)微信UI自动化-监控微信网络状态(C#)

因为文章所表达的意思可能无法满足每一位阅读需求,需要源码或者支持请联系作者QQ 978124155

(7)微信UI自动化-监控微信进程运行状态(C#)相关推荐

  1. (8)微信UI自动化-监控微信网络状态(C#)

    微信定时发送消息 (1)自动化程序在运行过程中应为依赖的主程序是微信,所以要对微信网络状态进行监控,如果发现微信处于断网状态的情况则自动化程序可以执行对应操作. (2)实现思路,开启一个线程定时监控微 ...

  2. (2)微信UI自动化-微信窗体管理(C#)

    我们是技术学习交流,请确保微信打开并处于登录状态.没有做过多的容错和对待复杂生产环境情况处理! (1)在进行自动化之前,我们需要找到PC微信窗体并获取微信窗体的句柄数据 我们借助WINDOWS的两个A ...

  3. (4)微信UI自动化-联系人采集(C#)

    在批量发送消息给联系人之前,需要采集到微信中的联系人和群聊数据 效果展示  接下来我们进行联系人采集的详细步骤 (1)找到通讯录的按钮元素,发送点击事件将通讯录面板置为选中状态 直接贴代码 priva ...

  4. (5)微信UI自动化-实现静默鼠标点击(C#)

         上文我们进行了联系人采集的工作, 最开始如果我用了FLAUI中的鼠标模拟方法,发现鼠标光标会跟随我们的调用而移动位置,那么我们能不能不移动鼠标而进行点击呢?         答案是肯定的,我 ...

  5. (3)微信UI自动化-热键管理(C#)

    进行微信自动化前,因为采集或者发送消息任务执行需要时间,并且微信窗体会将焦点长期占有,导致我们对软件失去控制,所以我们需要使用热键的方式将任务停止.我们这里采用热键是. (1)编写一个热键管理类 这个 ...

  6. (1)微信UI自动化-篇章开启(C#)

        近期看到很多人用HOOK钩子的方式来拦截微信的消息来实现微信的自动化操作.或者用现成的Python组件来实现微信的自动化.今天我使用模拟用户操作的方式来实现微信自动化. 软件功能 (1)自动采 ...

  7. UI自动化控制微信发送文件【解决了一个无人回答的难题,Pywin32设置文件到剪切板】

    大家好,我是小小明.前面我在<UI自动化控制PC版微信>该系列文中更新了控制微信发送图片的方法.根据部分群友实际工作的需要,本文将分享如何控制微信发送文件. 专栏链接:https://bl ...

  8. 云计算实训之项目3-基于微信实现自动化监控报警

    我的服务器是阿里云里的服务器,由于服务器有限,因此以下操作都是在一台服务器上进行的,也就是我自己监控我自己,不过无伤大雅,微信报警机器人还是会报警的.下面你准备好了麻,要开始辣~ 监控环境准备 部署z ...

  9. Appnium(三)企业微信UI自动化框架搭建

    前言 本章主要讲述针对[企业微信App]进行AppUI自动化测试框架的搭建 ps:这里底层用的是Appnium,另外写了一下底层Uiautomator2的简单搭建 UIautomator2框架搭建实战 ...

最新文章

  1. POJ 3458 Colour Sequence(简单题)
  2. 用Java调用WebService
  3. 死磕Java并发:J.U.C之AQS同步状态的获取与释放
  4. 一个浏览器插件,测试xpath的工具
  5. Sed教程(四):基本命令、特殊字符、字符串
  6. 基于 Annotation 拦截的 Spring AOP 权限验证方法
  7. BZOJ1305: [CQOI2009]dance跳舞
  8. wxWidgets:wxHashTable类用法
  9. Saltstack_实战指南01_系统规划
  10. RecyclerView 数据预取
  11. Linux命令 - chmod命令
  12. 【操作系统】时间片轮转调度法
  13. c# lu分解的代码_线性方程组的分解法——LU分解法
  14. FIR滤波器结合快速卷积滤波
  15. 关于基站定位及wifi定位
  16. Android系统连按5次电源键,手机连按5次电源键,能开启“紧急护主”功能,好多人没注意...
  17. PHP正则过滤处理微信昵称中emoji字符的方法(导出excel)
  18. 使用jdbc:nested exception is java.sql.SQLException: No value specified for parameter或bad SQL grammar
  19. DBeaver安装及使用
  20. 军工科研质量管理软件全面支持GJB5000A

热门文章

  1. 原始套接字-SOCK_RAW
  2. 截图识别文字软件哪个好?推荐四个屏幕截图文字识别软件推荐?
  3. 惠普打印共享器 hp usb network print adapter 驱动程序软件
  4. 米勒实验 计算机模拟,米勒-尤列实验
  5. 《HelloGitHub》第 86 期
  6. Linux shell中使用sed 替换\n换行符 (多行边一行、一行变多行)
  7. centos7 创建、删除目录软连接
  8. 【Linux】删除软连接被坑
  9. vue中的mixins的介绍和使用
  10. 【Python】第四章(文件操作)综合练习