整理 | 小耕家的喵大仙
出品 | CSDN(ID:lichao19897314)
Q Q | 978124155
往期知识回顾:
👆 以上文章是以往对使用自动化技术操作微信的一些文章及案例!!!!
先看效果,👆,为了达到更好的交互效果,我们的自动化程序需要跟随微信窗口一起移动,以达到看上去一个整体效果。
依然是继承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();
}
因为文章所表达的意思可能无法满足每一位阅读需求,需要源码或者支持请联系作者QQ 978124155