(3)采用热键终止微信采集任务-微信UI自动化(.Net+C#)

 整理 | 小耕家的喵大仙

出品 | CSDN(ID:lichao19897314)

关联源码及工具下载icon-default.png?t=O83Ahttps://download.csdn.net/download/lichao19897314/90096681
往期知识回顾: 

(1)C#开启探索微信自动化之路-微信UI自动化

(2)C#创建微信窗体自动化实例-微信UI自动化

(3)C#针对系统热键管理-微信UI自动化

(4)C#采集微信通讯录和联系人-微信UI自动化

(5)C#实现针对微信窗体鼠标静默点击-微信UI自动化

(6)C#搜索微信通讯录联系人-微信UI自动化

(7)C#实现微信消息群发-微信UI自动化

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

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

(11)C#实现微信窗体尺寸跟随调整-微信UI自动化

(12)C#采集微信聊天记录及历史消息-微信UI自动化

(13)C#实现自动回复微信消息-微信UI自动化

(14)C#针对微信界面元素截图操作-微信UI自动化

(15)C#实现对微信窗体的行为管控-微信UI自动化

(16)C#实现微信多开-微信UI自动化

(17)C#实现微信聊天文件接收及下载-微信UI自动化

👆 以上文章是以往对使用自动化技术操作微信的一些文章及案例!!!!

本篇目的     

    我们对微信UI自动化操作或者其它软件UI自动化操作之前,因为一些任务比如“采集微信通讯录”和“群发消息”,“获取微信聊天记录”等执行可能比较耗时,并且会导致被控制方软件窗体长期获得焦点导致我们对其它软件失去控制权,所以我们需要使用热键的方式将自动化任务停止。本文中采用热键是Ctrl+F8。

实现思路

(1)定义热键注册管理类

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

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事件中注册热键,将窗体的句柄传递给热键管理类,那么热键被激活时则会通过win消息的方式通知本窗体。

     this.Load += WXUIAuto_Load;
     private void WXUIAuto_Load(object sender, EventArgs e)
        {  
          WinHotKey.RegisterStop(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就停止微信自动化任务。

在窗体关闭事件中注销事件,确保资源的释放和安全。

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

上一篇 (2)C#创建微信窗体自动化实例-微信UI自动化icon-default.png?t=O83Ahttps://blog.csdn.net/lichao19897314/article/details/122719767

下一篇 (4)C#采集微信通讯录和联系人-微信UI自动化icon-default.png?t=O83Ahttps://blog.csdn.net/lichao19897314/article/details/122823991

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QQ978124155

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值