UIA-v2零基础通关:AutoHotkey UI自动化7天实战指南
【免费下载链接】UIA-v2UIAutomation library for AHK v2, based on thqby's UIA library项目地址: https://gitcode.com/gh_mirrors/ui/UIA-v2
AutoHotkey UIA-v2是一款让桌面操作自动化的强大工具,通过简单的脚本就能控制各种窗口和控件。本文将用7天时间,带你从环境搭建到实战应用,全面掌握UIA-v2的核心技能,让重复操作一键搞定!
第1天:3步搭建UIA-v2开发环境
1.1 获取项目源码
git clone https://gitcode.com/gh_mirrors/ui/UIA-v21.2 配置脚本环境
核心库文件位置:Lib/UIA.ahk
在脚本开头添加引用:
#Include <UIA.ahk> ; 引入UIA-v2核心库1.3 验证安装是否成功
运行Examples目录下的Example01_Notepad.ahk,若自动打开记事本并输入文本,则环境配置完成✅
第2天:元素定位实战方案
2.1 基础定位方法
通过控件名称精确定位:
; 定位名称为"确定"的按钮 confirmBtn := UIA.FindElement("Name='确定'")2.2 模糊匹配技巧
应对动态变化的控件名称:
; 使用~=进行模糊匹配,定位包含"保存"字样的按钮 saveBtn := UIA.FindElement("Name~='保存'")2.3 高级定位策略
组合多个条件定位元素:
; 定位类型为按钮且名称包含"确定"的元素 okBtn := UIA.FindElement("ControlType='Button' AND Name~='确定'")第3天:控件操作核心技巧
3.1 按钮点击实现
; 获取计算器的"1"按钮并点击 calcWindow := UIA.GetElement("Name='计算器'") num1Btn := calcWindow.FindElement("Name='1'") num1Btn.Invoke() ; 触发按钮点击3.2 文本输入操作
; 在记事本中输入文本 notepad := UIA.GetElement("Name='无标题 - 记事本'") editBox := notepad.FindElement("ControlType='Edit'") editBox.SetValue("Hello UIA-v2!") ; 设置文本内容3.3 窗口状态控制
; 控制窗口最大化 window := UIA.GetElement("Name='文档'") windowPattern := window.GetCurrentPattern("WindowPattern") windowPattern.SetWindowVisualState(1) ; 1表示最大化第4天:事件监听应用指南
4.1 焦点变化监听
; 注册焦点变化事件 UIA.RegisterEvent("FocusChanged", OnFocusChanged) ; 事件处理函数 OnFocusChanged(element) { MsgBox "焦点切换到: " element.Name }4.2 文本变化监控
; 监控文本框内容变化 textElement := UIA.FindElement("ControlType='Edit'") UIA.RegisterEvent("TextChanged", OnTextChanged, textElement) OnTextChanged(element, text) { ToolTip "内容变为: " text }第5天:浏览器自动化实战
5.1 浏览器控制基础
#Include <UIA_Browser.ahk> ; 引入浏览器控制库 ; 获取Chrome浏览器实例 browser := UIA_Browser.GetBrowser("Chrome")5.2 网页元素操作
; 在搜索框中输入内容并提交 searchBox := browser.FindElement("Name='搜索'") searchBox.SetValue("AutoHotkey UIA-v2") ; 输入搜索关键词 searchBox.Submit() ; 提交搜索第6天:脚本优化7个实用技巧
6.1 元素缓存提升性能
UIA.CacheElements := true ; 启用元素缓存 ; 第一次查询会缓存结果,后续查询速度提升 element1 := UIA.FindElement("Name='按钮1'") element2 := UIA.FindElement("Name='按钮2'")6.2 错误处理与重试
; 带重试机制的元素操作 Loop 3 { try { element := UIA.FindElement("Name='目标按钮'") element.Invoke() break ; 成功则跳出循环 } catch { Sleep 200 ; 失败后等待200ms重试 } }6.3 复杂控件树遍历
; 创建树遍历器 walker := UIA.CreateTreeWalker() rootElement := UIA.GetRootElement() ; 遍历所有子元素 current := walker.GetFirstChild(rootElement) while current { ToolTip current.Name current := walker.GetNextSibling(current) Sleep 500 }第7天:综合实战案例
7.1 记事本自动化
; 完整的记事本自动化脚本 #Include <UIA.ahk> ; 启动记事本 Run "notepad.exe" Sleep 1000 ; 等待程序启动 ; 获取记事本窗口 notepad := UIA.GetElement("Name='无标题 - 记事本'") ; 输入文本内容 editBox := notepad.FindElement("ControlType='Edit'") editBox.SetValue("UIA-v2自动化实战成功!") ; 保存文件 notepad.FindElement("Name='文件(F)'").Invoke() notepad.FindElement("Name='保存(S)'").Invoke() ; 输入文件名并确认 saveDialog := UIA.GetElement("Name='另存为'") saveDialog.FindElement("ControlType='Edit'").SetValue("UIA_test.txt") saveDialog.FindElement("Name='保存(S)'").Invoke()学习路径与资源推荐
推荐学习顺序
- 先运行Examples目录下的基础示例(Example01-Example05)
- 重点研究浏览器自动化示例(UIA_Browser_Example系列)
- 尝试修改现有示例,实现个性化需求
- 使用UIATreeInspector.ahk分析目标程序的控件结构
实用资源
- 官方示例库:Examples/目录下25个场景示例
- 控件查看工具:UIATreeInspector.ahk
- 核心库源码:Lib/UIA.ahk和Lib/UIA_Browser.ahk
通过7天的学习,你已经掌握了UIA-v2的核心技能。记住,自动化的关键在于多实践,尝试将日常重复操作编写成脚本,逐步提升自动化水平。遇到问题时,可通过分析官方示例和使用UIATreeInspector工具来解决。现在就动手开始你的第一个自动化脚本吧!
【免费下载链接】UIA-v2UIAutomation library for AHK v2, based on thqby's UIA library项目地址: https://gitcode.com/gh_mirrors/ui/UIA-v2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考