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

news/2024/7/4 1:46:49 标签: c#, 微信

一 准备

.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提示信息 可以做自动化辅助工具

演示代码下载


http://www.niftyadmin.cn/n/5210320.html

相关文章

【腾讯云HAI】都2023年了,HAI没玩过AIGC?

:::info 腾讯云高性能应用服务(Hyper Application lnventor,HA),是一款面向 Al、科学计算的 GPU 应用服务产品,为开发者量身打造的澎湃算力平台。无需复杂配置,便可享受即开即用的GPU云服务体验。在 HA] 中,根据应用智…

视频监控中的智能算法与计算机视觉技术

智能视频监控是一种基于人工智能技术的监控系统,它能够通过对图像和视频数据进行分析,自动识别目标物体、判断其行为以及进行异常检测等功能,从而实现对场景的智能化监管。以下是常见的一些用于智能视频监控的算法: 1、人脸识别技…

经典的回溯算法题leetcode棋盘问题思路代码详解

目录 棋盘问题 leetcode51题.N皇后 对回溯算法感兴趣的朋友也可以多多支持一下我的其他文章。 回溯算法详解-CSDN博客 经典的回溯算法题leetcode组合问题整理及思路代码详解-CSDN博客 经典的回溯算法题leetcode子集问题思路代码详解-CSDN博客 经典的回溯算法题leetcode全…

满满干货!搭建智能视频监控系统如何挑选前端设备?

在此前的文章中,小编也和大家讨论过如何选择适合场景需求又性价比高的摄像头。除了摄像头以外,智能监控系统的组成也少不了前端设备,今天就给大家介绍一下几大前端设备的区别与应用场景吧。 在智能视频监控中,前端设备一般分为四类…

C语言语句

语句 C语言规定每条语句都以分号结尾。 C语句可以分为以下 5 种: 控制语句 if() ~ else ~for() ~while() ~do ~ while()continuebreakswitchgotoreturn 函数调用语句表达式语句(表达式末尾加个分号)空语句(空语句中只含有一个单…

c++版本opencv计算灰度图像的轮廓点

代码 #include<iostream> #include<opencv.hpp>int main() {std::string imgPath("D:\\prostate_run\\result_US_20230804_141531\\mask\\us\\104.bmp");cv::Mat imgGray cv::imread(imgPath, 0);cv::Mat kernel cv::getStructuringElement(cv::MORPH…

小白一文搞懂正则表达式

大学的时候学过&#xff0c;没搞明白&#xff0c;工作的时候学了几次&#xff0c;还是懵逼的状态&#xff0c;写篇入门文字记录下如何快速搞懂正则表达式 首先写几个常用的正则表达式&#xff1a; 1.匹配手机号 1[34578]\d{9} 2.QQ号&#xff0c;第一位不能是0&#xff0c;5位…

Linux:配置Ubuntu系统的镜像软件下载地址

一、原理介绍 好处&#xff1a;从国内服务器下载APT软件&#xff0c;速度快。 二、配置 我这里配置的是清华大学的镜像服务器地址 https://mirrors.tuna.tsinghua.edu.cn/ 1、备份文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2、清空sources.list ec…