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

【Pywinauto库】1. 3 Inspect.exe 使用详解指南

概述

Inspect.exe 是 Microsoft Windows SDK 中包含的一个强大的辅助功能诊断工具。它基于 UI Automation (UIA) 框架,是识别现代应用程序(如 WPF、WinForms、Qt5、浏览器应用等)控件结构的首选工具,尤其适用于 pywinautobackend="uia" 模式。

获取与启动

安装来源

Inspect.exe 随 Windows SDK 一起安装。推荐安装最新版本的 Windows SDK。

默认安装路径
C:\Program Files (x86)\Windows Kits\10\bin\<sdk_version>\x64\Inspect.exe

例如

C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\Inspect.exe
快速启动
  1. Win
  2. 输入 inspect
  3. 在搜索结果中选择 Inspect (X64)

主界面与核心功能

Inspect 主界面分为几个关键区域:

  1. 菜单栏/工具栏: 包含模式切换、高亮、刷新等控制选项。
  2. 树形视图 (Tree View): 以层次结构显示所有UI元素。
  3. 属性面板 (Properties Pane): 显示当前选中元素的详细属性。

关键功能详解

1. 模式切换 (Mode Selection) - 最重要的一步

在工具栏的下拉列表中,确保选择 UI Automation 模式。这是正确查看现代应用程序控件属性的关键。

2. 元素选择工具
  • 鼠标悬停探测: 将鼠标移动到任何 UI 元素上,Inspect 会自动高亮该元素并在树形视图中定位它。
  • 元素点击锁定: 点击工具栏上的 “Target” 图标(或按 Ctrl + Shift + T),然后点击屏幕上的元素,可将其锁定在属性面板中供详细查看。
3. 导航UI树

在树形视图中:

  • 点击 + 号展开节点,查看父元素下的所有子元素。
  • 选中树中的任何节点,属性面板会即时更新其信息。
  • F5 刷新视图,反映最新的UI状态。

关键属性解读 (用于 pywinauto)

Inspect 显示的属性远多于 Spy++,以下是自动化脚本中最常用的核心属性:

属性名 (Property Name)说明pywinauto 中的对应参数
Name控件显示给用户的文本内容title=
AutomationId最稳定的标识符。开发人员为控件设置的唯一ID,通常不随语言变化。auto_id=
ControlType控件的类型(如 Button, Edit, List, MenuItem)。control_type=
ClassName底层控件的类名(Win32)。class_name=
LocalizedControlType控件类型的本地化描述(如 “按钮”)。-
IsKeyboardFocusable控件是否可接收键盘焦点。-
BoundingRectangle控件的屏幕坐标和尺寸。-

实战流程:识别一个按钮

假设我们要识别 Windows 计算器中的 “加号” 按钮。

  1. 打开 Inspect计算器
  2. 在 Inspect 的工具栏中,确认模式为 UI Automation
  3. 将鼠标悬停在计算器的 + 按钮上。你会看到它被一个彩色矩形高亮包围。
  4. 同时,Inspect 的树形视图会自动滚动并选中对应的 Button 节点。
  5. 查看右侧的属性面板,找到关键信息:
    Name: "加"
    AutomationId: "plusButton"
    ControlType: UIA_ButtonControlTypeId (50000)
    ClassName: "Button"
    
  6. 这些属性足以让我们在 pywinauto 中唯一地定位此按钮。

pywinauto 结合使用

根据 Inspect 查到的信息,编写自动化代码:

from pywinauto import Application# 连接到计算器 (使用UIA后端)
app = Application(backend="uia").connect(path="calculator.exe")# 方法1: 使用最稳定的 AutomationId
app.Calculator.plusButton.click()# 方法2: 使用Name/Title (注意语言环境)
# app.Calculator.child_window(title="加", control_type="Button").click()# 方法3: 组合条件确保精确匹配
calc = app.Calculator
add_button = calc.child_window(auto_id="plusButton", control_type="Button")
add_button.click()

高级技巧与功能

1. 模式对比

尝试在 Inspect 中切换回 MSAA 模式,你会发现对于许多现代控件,获取到的信息远少于 UIA 模式。这印证了为何 UIA 是首选。

2. 查看支持的模式

对于某些控件(如滑块),你可以查看其支持的 控件模式 (Control Patterns),如 RangeValuePatternSelectionPattern 等。这揭示了你可以通过编程与之交互的方式(如获取滑块值、选择列表项等)。

3. 事件监听

Inspect 可以监听 UI 自动化事件(如焦点改变、属性变化),这对于理解应用程序的动态行为非常有用,但通常用于高级调试而非基础自动化。

注意事项

  • 权限: 有时需要以管理员身份运行 Inspect 才能检测所有应用程序的控件。
  • 性能: 对于非常复杂或动态的UI(如网页),Inspect 可能会反应迟缓。耐心等待树形视图更新。
  • 缓存: 如果UI内容已更新但Inspect显示旧信息,记得按 F5 刷新。
  • 替代工具: Accessibility Insights for Windows 是微软推出的更现代、用户友好的替代工具,基于相同的UIA技术,提供了更好的工作流和测试功能。如果经常使用,建议也尝试一下。

通过掌握 Inspect.exe,你获得了分析和自动化任何现代 Windows 应用程序用户界面的强大能力。


文章转载自:

http://KcqXyXEK.Lktjj.cn
http://vSRKIo6d.Lktjj.cn
http://aM1n7TYc.Lktjj.cn
http://mhtZUWmf.Lktjj.cn
http://tml53Ssc.Lktjj.cn
http://wlokysWD.Lktjj.cn
http://jum2X79T.Lktjj.cn
http://NgVRJceA.Lktjj.cn
http://QT817GCy.Lktjj.cn
http://cNgz4R1G.Lktjj.cn
http://J1PrHC8G.Lktjj.cn
http://e0E7bRs8.Lktjj.cn
http://L6XWmVXa.Lktjj.cn
http://zOVvYMY1.Lktjj.cn
http://UhotjawJ.Lktjj.cn
http://aTfP0au9.Lktjj.cn
http://wDEEXqtZ.Lktjj.cn
http://2zzGHXb3.Lktjj.cn
http://nHO3QTCt.Lktjj.cn
http://lacQR4dZ.Lktjj.cn
http://H6HWHBhj.Lktjj.cn
http://JBbu7yEt.Lktjj.cn
http://3whM1JDj.Lktjj.cn
http://ZcidOcDT.Lktjj.cn
http://1kHxPi6A.Lktjj.cn
http://9bqjvvqa.Lktjj.cn
http://W9TxVCk0.Lktjj.cn
http://EiSTt7rF.Lktjj.cn
http://DYsVkgz7.Lktjj.cn
http://PYY2cftZ.Lktjj.cn
http://www.dtcms.com/a/374240.html

相关文章:

  • 「日拱一码」083 深度学习——残差网络
  • 注意力模块改进方法的原理及实现(MHA、MQA、GQA、MLA)
  • 蚂蚁 S21 Pro 220T矿机参数详解:SHA-256算法高效算力分析
  • 大模型测试包含哪些方面
  • 基于R语言的物种气候生态位动态量化与分布特征模拟
  • NGUI--Anchor组件和 事件系统
  • 基于Django的“酒店推荐系统”设计与开发(源码+数据库+文档+PPT)
  • OpenLayers数据源集成 -- 章节一:图像图层详解
  • 深度学习架构的硬件共生论:为什么GPU决定了AI的进化方向(Transformer、SSM、Mamba、MoE、CNN是什么、对比表格)
  • AndroidWorld+mobileRL
  • langchain4j笔记篇(阳哥)
  • 精简删除WIN11.24H2企业版映像内的OneDrive安装程序方法,卸载OneDrive组件
  • spring指南学习随记(一)
  • 安装配置简易VM虚拟机(CentOS 7)
  • 虚拟机中centos简单配置
  • commons-logging
  • 【小宁学习日记6 PCB】电路原理图
  • Rust位置表达式和值表达式
  • 对比:ClickHouse/MySQL/Apache Doris
  • 2025年学英语学习机选购指南
  • 浪涌测试主要用于评估电子设备或元器件在遭受短时高强度电压 / 电流冲击(浪涌)时的耐受能力
  • ANDROID,Jetpack Compose, 贪吃蛇小游戏Demo
  • html中列表和表格的使用
  • MyBatis-Plus 深度解析:IService 接口全指南
  • iPaaS 如何帮助 CIO 减少 50% 的集成成本?
  • [运动控制]PID算法再深入--多环组合控制
  • llm的一点学习笔记
  • JVM详解(一)--JVM和Java体系结构
  • Java字符串处理:String、StringBuilder与StringBuffer
  • SQL 注入与防御-第十章:确认并从 SQL 注入攻击中恢复