当前位置: 首页 > news >正文

Windows下使用UIAutomation技术遍历桌面窗口和指定窗口内容的AutomationWalker.exe的C#源代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Automation;
//引用"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationClient.dll"
//引用"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationTypes.dll"namespace ConsoleApp1
{class Program{static void WalkElement(AutomationElement element, TreeWalker walker, int depth, int limit){Console.WriteLine($"{new string(' ', depth * 2)}" + $"\"{element.Current.Name}\"");if (limit>0 && depth>=limit) return;AutomationElement child = walker.GetFirstChild(element);while (child != null){WalkElement(child, walker, depth + 1, limit);child = walker.GetNextSibling(child);}}static void Main(string[] args){if (args.Length < 1){Console.WriteLine("Usage: AutomationWalker \"window_title\"|desktop");return;} else if (args[0]=="desktop"){try{Console.WriteLine("Walker desktop begin ...");//Get the destkop elementAutomationElement elemDesktop = AutomationElement.RootElement;TreeWalker walker = TreeWalker.ControlViewWalker;WalkElement(elemDesktop, walker, 0, 1);Console.WriteLine("... Walker desktop end.");}catch (Exception){Console.WriteLine("Walker desktop error!");}return;}try{Console.WriteLine("Walker begin ...");//Get the destkop elementAutomationElement elemDesktop = AutomationElement.RootElement;//Search the Application main window by title from all childrenPropertyCondition pCondition = new PropertyCondition(AutomationElement.NameProperty, args[0]);AutomationElementCollection elemApplicationWindows = elemDesktop.FindAll(TreeScope.Children, pCondition);Console.WriteLine("elemApplicationWindows.Count:" + elemApplicationWindows.Count);for (int i = 0; i < elemApplicationWindows.Count; i++){TreeWalker walker = TreeWalker.ControlViewWalker;WalkElement(elemApplicationWindows[i], walker, 0, 0);}Console.WriteLine("... Walker end.");}catch (Exception){Console.WriteLine("Walker error!");}}}
}

将以上代码放在C#控制台项目中,生成AutomationWalker.exe

用法:

在cmd窗口中输入命令

AutomationWalker.exe desktop

列出当前桌面上所有窗口的用双引号括住的标题,比如

Walker desktop begin ...
""
""
"管理员: 命令提示符 - automationwalker  desktop"
"新标签页 - Google Chrome"
"dummyLayeredWnd"
"Program Manager"
... Walker desktop end.

输入命令

AutomationWalker.exe "新标签页 - Google Chrome"

列出窗口"新标签页 - Google Chrome"的内容。

当你想要提取某个窗口的文本内容时,使用AutomationWalker会很方便。

http://www.dtcms.com/a/296830.html

相关文章:

  • QT元对象系统-(1)静态属性和动态属性
  • Jenkins配置与应用指南
  • 外贸公司经营步骤
  • AI赋能软件工程让测试左移更加可实施
  • 《C++》面向对象编程--类(下)
  • IPv6网络优化
  • ANSYS Fluent 管内流动仿真
  • 如何恢复mysql,避免被研发删库跑路
  • Python(09)正则表达式
  • 无人机云台跟踪目标实现
  • springboot项目建立sse接口
  • tokenID和位置嵌入有关系吗,qwen 模型使用时候仅仅有tokenid 映射为向量,位置编码在哪里
  • C++的虚基类?
  • 黑马头条项目详解
  • cmake应用:集成gtest进行单元测试
  • MUX同步器
  • 人工智能概念:常用的模型压缩技术(剪枝、量化、知识蒸馏)
  • 一篇文章了解HashMap和ConcurrentHashMap的扩容机制
  • ESP32入门实战:PC远程控制LED灯完整指南
  • pandas库的数据导入导出,缺失值,重复值处理和数据筛选,matplotlib库 简单图绘制
  • AD一张原理图分成多张原理图
  • iview Select的Option边框显示不全(DatePicker也会出现此类问题)
  • rust-参考与借用
  • 爬虫逆向--Day12--DrissionPage案例分析【小某书评价数据某东评价数据】
  • MySQL零基础教程增删改查实战
  • java后端
  • mujoco playground
  • DBA常用数据库查询语句
  • DevOps 完整实现指南:从理论到实践
  • 论文阅读:《Many-Objective Evolutionary Algorithms: A Survey. 》多目标优化问题的优化目标评估的相关内容介绍