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

(1)编写一个热键管理类

这个类定义了捕获热键消息的ID,注册热键,注销热键的功能。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace OnlineRetailers.Extension.Page.UIAuto.Business
{/// <summary>/// 热键管理/// </summary>public class WinHotKey{/// <summary>/// 注册热键/// </summary>/// <param name="hWnd">为窗口句柄</param>/// <param name="id">注册的热键识别ID</param>/// <param name="control">组合键代码  Alt的值为1,Ctrl的值为2,Shift的值为4,Shift+Alt组合键为5///  Shift+Alt+Ctrl组合键为7,Windows键的值为8/// </param>/// <param name="vk">按键枚举</param>/// <returns></returns>[DllImport("user32")]static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);/// <summary>/// 取消注册的热键/// </summary>/// <param name="hWnd">窗口句柄</param>/// <param name="id">注册的热键id</param>/// <returns></returns>[DllImport("user32")]static extern bool UnregisterHotKey(IntPtr hWnd, int id);/// <summary>/// 任务停止热键/// </summary>/// <param name="Handle"></param>public static void RegisterStop(IntPtr Handle){WinHotKey.RegisterHotKey(Handle, StopId, 2, Keys.F8);}/// <summary>/// 取消停止热键/// </summary>/// <param name="Handle"></param>public static void UnRegisterStop(IntPtr Handle){WinHotKey.UnregisterHotKey(Handle, StopId);}/// <summary>/// 停止ID/// </summary>public static readonly int StopId = 8879;}
}

(2)窗体注册和注销热键

在窗体的Load事件中注册热键

     this.Load += WXUIAuto_Load;private void WXUIAuto_Load(object sender, EventArgs e){  WinHotKey.RegisterStop(this.Handle); }

在窗体关闭事件中注销事件

 this.FormClosed += WXUIAuto_FormClosed;private void WXUIAuto_FormClosed(object sender, FormClosedEventArgs e){WinHotKey.UnRegisterStop(this.Handle);}

注册了热键事件后我们需要一个方法来监听热键的事件,From窗体中提供了处理消息WndProc方法,我们重写这个方法,并加入自己的逻辑。

 protected override void WndProc(ref Message m){switch (m.Msg){case 0x0312:                                 if (m.WParam.ToString().Equals(WinHotKey.StopId.ToString()))    {//停止微信自动化任务}break;}base.WndProc(ref m);}

0x0312是热键的消息类型,消息参数是我们自己定义的,如果热键的消息参数等于停止的ID 8897就停止微信自动化任务。

接下来我们进行联系人采集学习

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

下一篇(4)微信UI自动化-联系人采集(C#)

(3)微信UI自动化-热键管理(C#)相关推荐

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

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

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

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

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

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

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

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

  5. (7)微信UI自动化-监控微信进程运行状态(C#)

    微信定时发送消息 (1)自动化程序在运行过程中应为依赖的主程序是微信,所以要对微信进程运行状态进行监控,如果发现微信处于运行状态的情况则自动化程序可以执行对应操作,微信应为人为或者意外导致关闭的情况则 ...

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

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

  7. ATP - UI 自动化测试用例管理平台搭建

    用到的工具:python3 + django2 + mysql + RabbitMQ + celery + selenium python3和selenium这个网上很多教程,我不在这一一说明: 平台 ...

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

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

  9. (10)微信UI自动化-微信窗口跟随主窗体移动(C#)

    先看效果,

最新文章

  1. R语言使用unzip函数解压压缩文件(Extract or List Zip Archives)
  2. 应用程序框架实战二十一:DDD分层架构之仓储(介绍篇)
  3. jdbc版本怎么看_Jmeter(十三)-JDBC脚本开发
  4. java成果_JAVA WEB期末项目第二阶段成果
  5. JQuery对selecte中的元素的操作
  6. 最新PHP秒赞,快乐秒赞 php版
  7. vue中 mock使用教程
  8. pthread库进行多线程编程 - 组件工厂 - C++博客
  9. 计算机的标准输入法,ALKATIP输入法电脑版
  10. 远程连接mysql失败异常,未配置权限,skip-name-resolve以及防火墙
  11. 从项目中由浅入深的学习vue,react,微信小程序和快应用(1)
  12. iOS开发:Mach-O入门理解
  13. 为什么手机显示itunes store无法连接服务器,iPad无法连接到iTunes Store怎么办?教你几招...
  14. 2022 3.17网易互娱研发岗笔试题锯齿数独题解
  15. 没有android手机确切内核头文件,绕过模块的版本检查,构建一个内核模块
  16. 台湾中华大学-田庆诚教授-射频放大器-观看笔记 1
  17. 怎么给当前计算机添加一个用户,电脑如何设置新用户 电脑创建新用户的方法...
  18. 【经典论文解读】YOLO 目标检测
  19. [webView stopLoading]; 和 [webView release];
  20. 如何成为一名好的程序员[转]

热门文章

  1. 数据库|SQLite数据库
  2. Centos 切换中文输入法
  3. fl2440 开发板环境配置(仅供个人参考,记忆力不好)
  4. Unity3D之人物头顶名称与血条更新与绘制
  5. php 广告公司管理软件,php网站广告管理插件 v2.0
  6. PHPthinking论坛官方有奖活动【大奖来袭】
  7. netCore webapi Uow实现方式
  8. 代孕是否一定构成刑事犯罪?
  9. Ubuntu安装Hadoop3.1.3教程
  10. 函数的递归调用举例之汉诺塔问题模型