C#FlaUI.UIA实现发送微信消息原理

一 准备

.NetFramework 4.8

FlaUI.UIA3 4.0.0

FlaUInspect V1.3.0

1下载FlaUInspect

https://github.com/FlaUI/FlaUInspect

FlaUInspect V1.3.0

百度网盘下载

2 NuGet 引用 flaUI.UIA3 4.0.0

二代码部分

1 引用FlaUI

复制代码
using FlaUI.Core;
using FlaUI.Core.AutomationElements;
using FlaUI.Core.Input;
using FlaUI.Core.WindowsAPI;
using FlaUI.UIA3;

2 代码全部

复制代码
 class Program
{
    //1.GetWindowText 获取给定窗口句柄的窗口标题
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern bool SwitchToThisWindow(IntPtr hWnd, bool fAltTab);
    [STAThread]//启动单一现场
    static void Main(string[] args)
    {

        Process[] processes = Process.GetProcessesByName("WeChat");
        if (processes.Count() != 1)
        {
            Console.WriteLine("微信未启动或启动多个微信");
        }
        else
        {
            //1.附加到微信进程
            using (var app = Application.Attach(processes.First().Id))
            {
                using (var automation = new UIA3Automation())
                {
                    //2.获取主界面
                    var mainWindow = app.GetMainWindow(automation);
                    //窗口置顶显示  避免其它窗口遮挡影响后续操作
                    IntPtr handle = processes.First().MainWindowHandle;
                    SwitchToThisWindow(handle, true);    // 激活,显示在最
                    var childWind = mainWindow.FindChildAt(1).FindChildAt(0).FindChildAt(1).FindChildAt(0).FindChildAt(0).FindChildAt(0);
                    childWind.DrawHighlight(System.Drawing.Color.Red);
                    childWind.Click();
                    //搜索"文件传输助手"
                    Keyboard.Type("文件传输助手");
                    Thread.Sleep(800);
                    //回车
                    Keyboard.Type(VirtualKeyShort.RETURN);
                    Thread.Sleep(800);
                    //输入内容
                    Keyboard.Type("文件传输助手");
                    Thread.Sleep(800);
                    //回车
                    Keyboard.Type(VirtualKeyShort.RETURN);




                }
            }
        }

    }
}

三 原理如下

FlaUInspect V1.3.0

查找pane 节点 1,0,1,0,0,0

找到搜索

mainWindow.FindChildAt(1 ).FindChildAt(0 ).FindChildAt(1 ).FindChildAt(0 ).FindChildAt(0 ).FindChildAt(0);

根据FlaUInspect提示信息 可以做自动化辅助工具

演示代码下载

相关推荐
陈思杰系统思考Jason10 小时前
系统思考:短视决策与长期风险
百度·微信·微信公众平台·新浪微博·微信开放平台
fie888911 小时前
C# 文件分割与合并工具设计与实现
开发语言·c#
ytttr87312 小时前
C# 读取数据库表结构工具设计与实现
开发语言·数据库·c#
鸽子一号13 小时前
c#笔记之lambda表达式和linq
笔记·c#·linq
qq_3911053414 小时前
TDengine C# 连接示例和授权管理
大数据·数据库·c#·时序数据库·tdengine
孙严Pay14 小时前
快捷支付和网关支付,到底有啥不一样?
笔记·科技·计算机网络·其他·微信
羊群智妍14 小时前
2026年AI搜索优化/GEO技术演进:行业趋势与落地实践
百度·微信·微信公众平台·facebook·新浪微博
a177988771214 小时前
小程序码的生成与获取码中的scene
小程序·c#
无风听海15 小时前
.NET10之C# Target-typed new expression深入解析
windows·c#·.net
这辈子谁会真的心疼你15 小时前
怎么修改pdf文档属性?介绍三个方法
数据库·pdf·c#