(3)微信UI自动化-热键管理(C#)
进行微信自动化前,因为采集或者发送消息任务执行需要时间,并且微信窗体会将焦点长期占有,导致我们对软件失去控制,所以我们需要使用热键的方式将任务停止。我们这里采用热键是。
(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#)相关推荐
- (2)微信UI自动化-微信窗体管理(C#)
我们是技术学习交流,请确保微信打开并处于登录状态.没有做过多的容错和对待复杂生产环境情况处理! (1)在进行自动化之前,我们需要找到PC微信窗体并获取微信窗体的句柄数据 我们借助WINDOWS的两个A ...
- (4)微信UI自动化-联系人采集(C#)
在批量发送消息给联系人之前,需要采集到微信中的联系人和群聊数据 效果展示 接下来我们进行联系人采集的详细步骤 (1)找到通讯录的按钮元素,发送点击事件将通讯录面板置为选中状态 直接贴代码 priva ...
- (1)微信UI自动化-篇章开启(C#)
近期看到很多人用HOOK钩子的方式来拦截微信的消息来实现微信的自动化操作.或者用现成的Python组件来实现微信的自动化.今天我使用模拟用户操作的方式来实现微信自动化. 软件功能 (1)自动采 ...
- (8)微信UI自动化-监控微信网络状态(C#)
微信定时发送消息 (1)自动化程序在运行过程中应为依赖的主程序是微信,所以要对微信网络状态进行监控,如果发现微信处于断网状态的情况则自动化程序可以执行对应操作. (2)实现思路,开启一个线程定时监控微 ...
- (7)微信UI自动化-监控微信进程运行状态(C#)
微信定时发送消息 (1)自动化程序在运行过程中应为依赖的主程序是微信,所以要对微信进程运行状态进行监控,如果发现微信处于运行状态的情况则自动化程序可以执行对应操作,微信应为人为或者意外导致关闭的情况则 ...
- (5)微信UI自动化-实现静默鼠标点击(C#)
上文我们进行了联系人采集的工作, 最开始如果我用了FLAUI中的鼠标模拟方法,发现鼠标光标会跟随我们的调用而移动位置,那么我们能不能不移动鼠标而进行点击呢? 答案是肯定的,我 ...
- ATP - UI 自动化测试用例管理平台搭建
用到的工具:python3 + django2 + mysql + RabbitMQ + celery + selenium python3和selenium这个网上很多教程,我不在这一一说明: 平台 ...
- Appnium(三)企业微信UI自动化框架搭建
前言 本章主要讲述针对[企业微信App]进行AppUI自动化测试框架的搭建 ps:这里底层用的是Appnium,另外写了一下底层Uiautomator2的简单搭建 UIautomator2框架搭建实战 ...
- (10)微信UI自动化-微信窗口跟随主窗体移动(C#)
先看效果,
最新文章
- R语言使用unzip函数解压压缩文件(Extract or List Zip Archives)
- 应用程序框架实战二十一:DDD分层架构之仓储(介绍篇)
- jdbc版本怎么看_Jmeter(十三)-JDBC脚本开发
- java成果_JAVA WEB期末项目第二阶段成果
- JQuery对selecte中的元素的操作
- 最新PHP秒赞,快乐秒赞 php版
- vue中 mock使用教程
- pthread库进行多线程编程 - 组件工厂 - C++博客
- 计算机的标准输入法,ALKATIP输入法电脑版
- 远程连接mysql失败异常,未配置权限,skip-name-resolve以及防火墙
- 从项目中由浅入深的学习vue,react,微信小程序和快应用(1)
- iOS开发:Mach-O入门理解
- 为什么手机显示itunes store无法连接服务器,iPad无法连接到iTunes Store怎么办?教你几招...
- 2022 3.17网易互娱研发岗笔试题锯齿数独题解
- 没有android手机确切内核头文件,绕过模块的版本检查,构建一个内核模块
- 台湾中华大学-田庆诚教授-射频放大器-观看笔记 1
- 怎么给当前计算机添加一个用户,电脑如何设置新用户 电脑创建新用户的方法...
- 【经典论文解读】YOLO 目标检测
- [webView stopLoading]; 和 [webView release];
- 如何成为一名好的程序员[转]