(10)实现微信窗体自动跟随移动-微信UI自动化(.Net+C#)

 整理 | 小耕家的喵大仙

出品 | CSDN(ID:lichao19897314)

Q Q | 978124155

 往期知识回顾: 

(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自动化

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

先看效果,👆,为了达到更好的交互效果,我们的自动化程序需要跟随微信窗口一起移动,以达到看上去一个整体效果。

依然是继承BaseMonitor类

实现思路是监听微信窗体的位置和大小,动态调整自动化程序的位置和大小。



namespace OnlineRetailers.Extension.WXAuto.UIAuto.Monitor
{
    /// <summary>
    /// 窗体跟随微信移动
    /// </summary>
    public class UI_WX_Move_Monitor : BaseMonitor
    {
        public Window Window { get; set; }

        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 (Window != null)
                    {
                        Do();
                    }
                    Thread.Sleep(50);
                }
                ExecuteMonitorStop();
            }));
            th.Start();
        }
        public override void Break()
        {
            SystemLog.Info("关闭跟随微信窗体移动联动监听");
            base.Break();
        }

        private void Do()
        {
            var id = WXWin32.GetWeiXin();
            var result = !Win32_IsWindowVisible.Do(id);
            if (result)
                return;
            result = Win32_WindowMin.Do(id);
            if (result)
                return;
            if (id != IntPtr.Zero)
            {
                var rect = Win32_Window_Rect.Do(id);
                this.Window.Dispatcher.Invoke(new Action(() =>
                {
                    int margin =  MovePYUnit.Margin;
                    var left = TransformToDpi(rect.left -  margin);
                    if (this.Window.Left != left)
                        this.Window.Left = left;

                    var top = TransformToDpi(rect.top - (MovePYUnit.WXTop  + margin));
                    if (this.Window.Top != top)
                        this.Window.Top = top;

                    var height = TransformToDpi(rect.bottom - rect.top + (MovePYUnit.WindowTop+ MovePYUnit.BottomMargin));
                    if (this.Window.Height != height)
                        this.Window.Height = height;

                    var Width = TransformToDpi(rect.right - rect.left +(MovePYUnit .OpertionAreaWidth+ margin));
                    if (this.Window.Width != Width)
                        this.Window.Width = Width;
                }));
            }
        }
        /// <summary>
        /// WPF转像素
        /// </summary>
        /// <param name="unitX"></param>
        /// <returns></returns>
        public int TransformToDpi(int unitX)
        {
          using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
            {
                return (int)(96 / g.DpiX * px);
            }
        }
        
    }
}

调用


  public MainWindow()
        {
            
            UI_WX_Move_Monitor wxMove =  new UI_WX_Move_Monitor(); 
            wxMove.Window = this;
            wxMove.Monitor();
        }

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C是一种计算机编程语言,由美国贝尔实验室的丹尼斯·里奇于1972年开发。C语言是一种通用的高级程序设计语言,被广泛应用于系统软件、应用软件和嵌入式系统的开发中。 C语言的设计目标是提供高效、可移植和可扩展的编程环境。它具有较低的级别和较高的抽象程度,允许程序员直接访问和操作计算机硬件,同时具备更高级别语言的表达能力。 C语言具有简洁而又灵活的语法结构,使得程序员可以轻松地编写和理解代码。它支持丰富的数据类型、运算符和控制流结构,为程序员提供了强大的编程能力。同时,C语言还提供了丰富的库函数,使得编写复杂的程序变得更加简单。 C语言的特点之一是具有良好的可移植性。由于C语言在不同的计算机系统上的实现较为统一,因此编写的程序可以很容易地在不同的平台上运行。这使得C语言成为了跨平台开发的首选语言。 C语言的应用非常广泛。它被用于开发各种类型的软件,包括操作系统、编译器、数据库、网络协议等。此外,C语言还被广泛应用于嵌入式系统的开发中,因为它能够直接访问硬件资源,具备较好的性能和效率。 总之,C语言是一种功能强大、灵活且可移植的编程语言。它在计算机科学领域发挥着重要的作用,无论是在系统软件还是应用软件的开发中,都有着广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小耕家的喵大仙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值