uiautomation

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2026 License: MIT Imports: 8 Imported by: 0

README

🪟 Windows UI Automation Go 语言库

Go Reference Go Report Card Go Version

一个高性能、易用的 Windows UI 自动化 Go 库

基于 Windows UI Automation 框架,提供简洁的 Go API 进行桌面应用自动化

快速开始功能特性示例API文档


📖 概述

go-element 是一个专为 Windows 平台设计的 UI 自动化 Go 语言库。它通过 Windows COM 接口与 UI Automation 框架交互,让您能够轻松地:

  • 🔍 查找和遍历 UI 元素树
  • 🖱️ 模拟用户操作 如点击、输入文本、选择等
  • 📊 读取 UI 属性 如名称、类名、控件类型等
  • 高性能缓存 批量获取属性,减少 IPC 开销

✨ 功能特性

特性 描述
🚀 高性能 使用 IUIAutomationCacheRequest 批量获取属性,显著减少 IPC 开销
🎯 零反射 移除反射逻辑,显式属性填充,提升运行时效率和类型安全
🔧 模式封装 内置常用模式:ValueInvokeToggleExpandCollapseSelectionItem
🛡️ 资源安全 严格的 COM 生命周期管理,防止内存泄漏和句柄耗尽
🔍 便捷搜索 FindByNameFindByAutomationId 等快捷方法
📦 JSON 支持 UI 结构可序列化为 JSON,便于调试和分析

📦 安装

go get -u github.com/yuan71058/go-element

🔨 编译说明

为确保在各种 Windows 架构上正常运行:

架构 命令 说明
64 位 GOOS=windows GOARCH=amd64 go build . 默认,适用于现代系统
32 位 GOOS=windows GOARCH=386 go build . 高兼容性,适用于旧系统

⚠️ 注意:如果 64 位程序出现 is not valid win32 application 错误,请使用 32 位架构重新编译。

🚀 快速开始

基础用法
package main

import (
    "fmt"
    uia "github.com/yuan71058/go-element"
)

func main() {
    // 1. 初始化 COM
    uia.CoInitialize()
    defer uia.CoUninitialize()

    // 2. 查找目标窗口
    hwnd, err := uia.GetWindowForString("Notepad", "")
    if err != nil {
        panic("窗口未找到")
    }

    // 3. 创建 UI Automation 实例
    instance, _ := uia.CreateInstance(
        uia.CLSID_CUIAutomation,
        uia.IID_IUIAutomation,
        uia.CLSCTX_ALL,
    )
    ppv := uia.NewIUIAutomation(uia.NewIUnKnown(instance))
    defer ppv.Release()

    // 4. 获取窗口元素
    root, _ := ppv.ElementFromHandle(hwnd)
    defer root.Release()

    // 5. 遍历 UI 树
    tree := uia.TraverseUIElementTree(ppv, root)
    uia.TreeString(tree, 0)
}

📚 示例

1️⃣ 输出 UI 树结构
// 遍历 Chrome 浏览器 UI 树
hwnd, _ := uia.GetWindowForString("Chrome_WidgetWin_1", "")
instance, _ := uia.CreateInstance(uia.CLSID_CUIAutomation, uia.IID_IUIAutomation, uia.CLSCTX_INPROC_SERVER)
ppv := uia.NewIUIAutomation(uia.NewIUnKnown(instance))
defer ppv.Release()

root, _ := ppv.ElementFromHandle(hwnd)
defer root.Release()

elems := uia.TraverseUIElementTree(ppv, root)
uia.TreeString(elems, 0)  // 打印树形结构
2️⃣ 自动化记事本
// 查找记事本并输入文本
hwnd, _ := uia.GetWindowForString("Notepad", "")
// ... 初始化代码 ...

tree := uia.TraverseUIElementTree(ppv, root)

// 查找文本编辑器并设置值
if editor := tree.FindByName("文本编辑器"); editor != nil {
    if vp, err := editor.GetValuePattern(); err == nil {
        defer vp.Release()
        vp.SetValue("Hello from go-element!")
    }
}
3️⃣ 按钮点击
// 查找并点击按钮
if button := tree.FindByName("确定"); button != nil {
    if ip, err := button.GetInvokePattern(); err == nil {
        defer ip.Release()
        ip.Invoke()  // 执行点击
    }
}
4️⃣ 复选框切换
// 查找复选框并切换状态
if checkbox := tree.FindByName("记住密码"); checkbox != nil {
    if tp, err := checkbox.GetTogglePattern(); err == nil {
        defer tp.Release()
        state, _ := tp.Get_CurrentToggleState()
        fmt.Printf("当前状态: %v\n", state)
        tp.Toggle()  // 切换状态
    }
}
5️⃣ 自定义条件搜索
// 查找所有启用的按钮
buttons := uia.FindElems(tree, func(elem *uia.Element) bool {
    return elem.CurrentControlType == uia.UIA_ButtonControlTypeId && 
           elem.CurrentIsEnabled == 1
})

for i, btn := range buttons {
    fmt.Printf("%d. %s\n", i+1, btn.CurrentName)
}
6️⃣ 微信自动化
// 查找微信窗口
hwnd, _ := uia.GetWindowForString("WeChatMainWndForPC", "")
// ... 初始化代码 ...

tree := uia.TraverseUIElementTree(ppv, root)

// 在搜索框输入联系人
if searchBox := tree.FindByName("搜索"); searchBox != nil {
    if vp, err := searchBox.GetValuePattern(); err == nil {
        defer vp.Release()
        vp.SetValue("文件传输助手")
    }
}

// 查找并输入消息
if inputBox := tree.FindByAutomationId("chat_input_field"); inputBox != nil {
    if vp, err := inputBox.GetValuePattern(); err == nil {
        defer vp.Release()
        vp.SetValue("自动发送的消息")
    }
}

📁 项目结构

go-element/
├── 📄 com.go              # COM 初始化和窗口查找
├── 📄 uiautomation.go     # IUIAutomation 核心接口
├── 📄 element.go          # Element 结构和便捷方法
├── 📄 client.go           # Pattern 客户端接口
├── 📄 condition.go        # 条件查询接口
├── 📄 constants.go        # 常量定义
├── 📄 id.go               # 属性ID、模式ID、控件类型ID
├── 📄 enum.go             # 枚举类型
├── 📄 typedef.go          # 类型定义
├── 📄 variant.go          # VARIANT 类型
├── 📄 unknown.go          # IUnknown 基础接口
├── 📄 uia.go              # UIA 相关定义
├── 📂 example/            # 示例代码
│   ├── wechat_demo/       # 微信自动化示例
│   ├── notepad_demo/      # 记事本自动化示例
│   └── ...                # 更多示例
├── 📄 README.md           # 项目说明
└── 📄 API文档.md          # 详细 API 文档

📋 支持的模式 (Patterns)

模式 用途 主要方法
ValuePattern 文本输入/获取 SetValue(), Get_CurrentValue()
InvokePattern 按钮点击 Invoke()
TogglePattern 复选框切换 Toggle(), Get_CurrentToggleState()
ExpandCollapsePattern 菜单展开/折叠 Expand(), Collapse()
SelectionItemPattern 列表项选择 Select()

📊 功能状态

  • 高性能属性缓存
  • UI 结构的 JSON 序列化
  • 常用模式封装(Invoke、Value、Toggle 等)
  • 便捷元素查找方法
  • 详细中文注释和文档
  • UI 事件监听器支持
  • 更多专门的 UI 操作

⚠️ 注意事项

COM 初始化
  • ✅ 必须在使用前调用 CoInitialize()
  • ✅ 使用后必须调用 CoUninitialize()
  • ✅ 建议使用 defer 确保清理
资源管理
  • ✅ 所有 COM 对象使用完毕后必须调用 Release()
  • ✅ 使用 defer 确保资源释放
架构兼容
  • ⚠️ 64 位程序无法操作 32 位进程的 UI
  • ⚠️ 32 位程序无法操作 64 位进程的 UI

📖 API 文档

详细的 API 文档请参阅 API文档.md

🤝 贡献

欢迎贡献!如果您发现错误或想要增强库的功能,请:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

📄 许可证

本库采用 MIT 许可证分发。详见 LICENSE 文件。

🔗 参考资源


如果这个项目对您有帮助,请给一个 ⭐️ Star!

Made with ❤️ by go-element contributors

Documentation

Overview

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装 用于自动化 Windows 应用程序的 UI 元素操作

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Package uiautomation 提供 Windows UI Automation 的 Go 语言封装

Index

Constants

This section is empty.

Variables

View Source
var (
	// CLSID_CUIAutomation UI Automation 组件类标识符
	// 用于创建 IUIAutomation 实例
	CLSID_CUIAutomation = &syscall.GUID{0xff48dba4, 0x60ef, 0x4201, [8]byte{0xaa, 0x87, 0x54, 0x10, 0x3e, 0xef, 0x59, 0x4e}}

	// IID_IUIAutomation IUIAutomation 接口标识符
	// 注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{IID}
	IID_IUIAutomation = &syscall.GUID{0x30cbe57d, 0xd9d0, 0x452a, [8]byte{0xab, 0x13, 0x7a, 0xc5, 0xac, 0x48, 0x25, 0xee}}
)

UI Automation COM 类和接口的 GUID 参考: https://learn.microsoft.com/zh-cn/previous-versions/windows/desktop/legacy/ff384838(v=vs.85)

View Source
var (
	// ErrorBstrPointerNil BSTR 指针为空错误
	ErrorBstrPointerNil = errors.New("BSTR pointer is nil")
)
View Source
var (

	// ErrorNotFoundWindow 窗口未找到错误
	ErrorNotFoundWindow = errors.New("not found window")
)

Windows API DLL 和函数声明

Functions

func AddRef

func AddRef(v *IUnKnown) uint32

AddRef 增加对象引用计数(包级函数) 参数: v - IUnKnown 接口 返回: 新的引用计数

func CoInitialize

func CoInitialize() error

CoInitialize 初始化 COM 库 在使用任何 COM 对象之前必须调用此函数 返回: 初始化失败时返回错误 注意: 会锁定 OS 线程,需要配合 CoUninitialize 释放

func CoUninitialize

func CoUninitialize()

CoUninitialize 释放 COM 库 在程序结束时调用,与 CoInitialize 配对使用 注意: 会解锁 OS 线程

func CreateInstance

func CreateInstance(clsid, riid *syscall.GUID, clsctx CLSCTX) (unsafe.Pointer, error)

CreateInstance 创建 COM 对象实例 参数:

  • clsid: 类标识符(CLSID)
  • riid: 接口标识符(IID)
  • clsctx: 执行上下文

返回:

  • unsafe.Pointer: COM 对象指针
  • error: 创建失败时返回错误

func FindWindowExW

func FindWindowExW(phwdn, chwdn uintptr, lpclass, lpwindow string) uintptr

FindWindowExW 查找子窗口 参数:

  • phwdn: 父窗口句柄
  • chwdn: 子窗口句柄(从该窗口之后开始查找)
  • lpclass: 窗口类名
  • lpwindow: 窗口标题名

返回: 窗口句柄,未找到返回 0

func FindWindowW

func FindWindowW(lpclass, lpwindow string) uintptr

FindWindowW 查找顶层窗口 参数:

  • lpclass: 窗口类名
  • lpwindow: 窗口标题名

返回: 窗口句柄,未找到返回 0

func GetIDsOfNames

func GetIDsOfNames(v *IDispatch, in *syscall.GUID, in2 uint16, in3, in4 uint32) (int32, error)

GetIDsOfNames 获取方法或属性的名称ID 参数:

  • v: IDispatch 接口
  • in: GUID
  • in2: 名称数量
  • in3: 区域设置ID
  • in4: 名称数组

返回: 名称ID和可能的错误

func GetWindowForString

func GetWindowForString(classname, windowname string) (uintptr, error)

GetWindowForString 通过类名或窗口名查找窗口 参数:

  • classname: 窗口类名(可为空)
  • windowname: 窗口标题名(可为空)

返回:

  • uintptr: 窗口句柄
  • error: 未找到窗口时返回错误

func Get_BooleanValue

func Get_BooleanValue(v *IUIAutomationBoolCondition) int32

Get_BooleanValue 获取布尔条件的值 参数: v - 布尔条件接口 返回: 布尔值(0=false, 非0=true)

func Get_ChildCount

func Get_ChildCount(v *IUIAutomationAndCondition) int32

Get_ChildCount 获取 AND 条件中的子条件数量 参数: v - AND 条件接口 返回: 子条件数量

func Get_Length

func Get_Length(v *IUIAutomationElementArray) int32

func HResult

func HResult(ret uintptr) error

HResult 将 HRESULT 转换为错误 参数: ret - HRESULT 值 返回: 错误对象,成功返回 nil

func QueryInterface

func QueryInterface(v *IUnKnown, riid *syscall.GUID) (unsafe.Pointer, error)

QueryInterface 查询对象是否支持指定接口 参数:

  • v: IUnKnown 接口
  • riid: 接口标识符(IID)

返回:

  • unsafe.Pointer: 接口指针
  • error: 查询失败时返回错误

func Release

func Release(v *IUnKnown) uint32

Release 释放对象引用计数(包级函数) 参数: v - IUnKnown 接口 返回: 新的引用计数

func TreeString

func TreeString(root *Element, level int)

TreeString 以树形结构打印元素 参数:

  • root: 根元素
  • level: 缩进层级

func UnKnownToUintptr

func UnKnownToUintptr(obj interface{}) uintptr

UnKnownToUintptr 将 IUnKnown 接口转换为 uintptr 用于 COM 方法调用 参数: obj - 接口对象 返回: 指针值

Types

type CLSCTX

type CLSCTX uint32

CLSCTX COM 类上下文

var (
	CLSCTX_INPROC_SERVER        CLSCTX = 0x1     // 进程内服务器
	CLSCTX_INPROC_HANDLER       CLSCTX = 0x2     // 进程内处理器
	CLSCTX_LOCAL_SERVER         CLSCTX = 0x4     // 本地服务器
	CLSCTX_INPROC_SERVER16      CLSCTX = 0x8     // 16位进程内服务器
	CLSCTX_REMOTE_SERVER        CLSCTX = 0x10    // 远程服务器
	CLSCTX_INPROC_HANDLER16     CLSCTX = 0x20    // 16位进程内处理器
	CLSCTX_RESERVED1            CLSCTX = 0x40    // 保留
	CLSCTX_RESERVED2            CLSCTX = 0x80    // 保留
	CLSCTX_RESERVED3            CLSCTX = 0x100   // 保留
	CLSCTX_RESERVED4            CLSCTX = 0x200   // 保留
	CLSCTX_NO_CODE_DOWNLOAD     CLSCTX = 0x400   // 禁止代码下载
	CLSCTX_RESERVED5            CLSCTX = 0x800   // 保留
	CLSCTX_NO_CUSTOM_MARSHAL    CLSCTX = 0x1000  // 禁止自定义封送
	CLSCTX_ENABLE_CODE_DOWNLOAD CLSCTX = 0x2000  // 启用代码下载
	CLSCTX_NO_FAILURE_LOG       CLSCTX = 0x4000  // 禁止失败日志
	CLSCTX_DISABLE_AAA          CLSCTX = 0x8000  // 禁用 AAA
	CLSCTX_ENABLE_AAA           CLSCTX = 0x10000 // 启用 AAA
	CLSCTX_FROM_DEFAULT_CONTEXT CLSCTX = 0x20000 // 从默认上下文
	CLSCTX_ACTIVATE_X86_SERVER  CLSCTX = 0x40000 // 激活 x86 服务器

	CLSCTX_ACTIVATE_64_BIT_SERVER CLSCTX = 0x80000   // 激活 64 位服务器
	CLSCTX_ENABLE_CLOAKING        CLSCTX = 0x100000  // 启用伪装
	CLSCTX_APPCONTAINER           CLSCTX = 0x400000  // 应用容器
	CLSCTX_ACTIVATE_AAA_AS_IU     CLSCTX = 0x800000  // 作为 IU 激活 AAA
	CLSCTX_RESERVED6              CLSCTX = 0x1000000 // 保留
	CLSCTX_ACTIVATE_ARM32_SERVER  CLSCTX = 0x2000000 // 激活 ARM32 服务器

	CLSCTX_PS_DLL CLSCTX = 0x80000000                                                                                // PS DLL
	CLSCTX_ALL    CLSCTX = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER // 所有上下文
)

COM 类上下文常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx

type ChangeEventHandler

type ChangeEventHandler struct {
	Element       *IUIAutomationElement      // 目标元素
	Scope         TreeScope                  // 搜索范围
	CacheRequest  *IUIAutomationCacheRequest // 缓存请求
	Handler       *IUnKnown                  // 事件处理器(原为 IUIAutomationPropertyChangedEventHandler)
	PropertyArray *TagSafeArray              // 属性数组
}

ChangeEventHandler 属性变更事件处理器配置 注意: IUIAutomationPropertyChangedEventHandler 类型未定义,暂时使用 IUnKnown

type ChangeEventHandlerNativeArray

type ChangeEventHandlerNativeArray struct {
	Element       *IUIAutomationElement      // 目标元素
	Scope         TreeScope                  // 搜索范围
	CacheRequest  *IUIAutomationCacheRequest // 缓存请求
	Handler       *IUnKnown                  // 事件处理器(原为 IUIAutomationPropertyChangedEventHandler)
	PropertyArray *TagSafeArray              // 属性数组
	PropertyCount int32                      // 属性数量
}

ChangeEventHandlerNativeArray 属性变更事件处理器配置(原生数组版本) 注意: IUIAutomationPropertyChangedEventHandler 类型未定义,暂时使用 IUnKnown

type ControlTypeId

type ControlTypeId int32

ControlTypeId UI Automation 控件类型标识符类型 用于标识 UI 元素的控件类型,如按钮、文本框、列表等

const (
	UIA_AppBarControlTypeId       ControlTypeId = 50040 // 应用栏控件
	UIA_ButtonControlTypeId       ControlTypeId = 50000 // 按钮控件
	UIA_CalendarControlTypeId     ControlTypeId = 50001 // 日历控件
	UIA_CheckBoxControlTypeId     ControlTypeId = 50002 // 复选框控件
	UIA_ComboBoxControlTypeId     ControlTypeId = 50003 // 组合框控件
	UIA_CustomControlTypeId       ControlTypeId = 50025 // 自定义控件
	UIA_DataGridControlTypeId     ControlTypeId = 50028 // 数据网格控件
	UIA_DataItemControlTypeId     ControlTypeId = 50029 // 数据项控件
	UIA_DocumentControlTypeId     ControlTypeId = 50030 // 文档控件
	UIA_EditControlTypeId         ControlTypeId = 50004 // 编辑控件(文本框)
	UIA_GroupControlTypeId        ControlTypeId = 50026 // 分组控件
	UIA_HeaderControlTypeId       ControlTypeId = 50034 // 标题控件
	UIA_HeaderItemControlTypeId   ControlTypeId = 50035 // 标题项控件
	UIA_HyperlinkControlTypeId    ControlTypeId = 50005 // 超链接控件
	UIA_ImageControlTypeId        ControlTypeId = 50006 // 图像控件
	UIA_ListControlTypeId         ControlTypeId = 50008 // 列表控件
	UIA_ListItemControlTypeId     ControlTypeId = 50007 // 列表项控件
	UIA_MenuBarControlTypeId      ControlTypeId = 50010 // 菜单栏控件
	UIA_MenuControlTypeId         ControlTypeId = 50009 // 菜单控件
	UIA_MenuItemControlTypeId     ControlTypeId = 50011 // 菜单项控件
	UIA_PaneControlTypeId         ControlTypeId = 50033 // 面板控件
	UIA_ProgressBarControlTypeId  ControlTypeId = 50012 // 进度条控件
	UIA_RadioButtonControlTypeId  ControlTypeId = 50013 // 单选按钮控件
	UIA_ScrollBarControlTypeId    ControlTypeId = 50014 // 滚动条控件
	UIA_SemanticZoomControlTypeId ControlTypeId = 50039 // 语义缩放控件
	UIA_SeparatorControlTypeId    ControlTypeId = 50038 // 分隔符控件
	UIA_SliderControlTypeId       ControlTypeId = 50015 // 滑块控件
	UIA_SpinnerControlTypeId      ControlTypeId = 50016 // 微调控件
	UIA_SplitButtonControlTypeId  ControlTypeId = 50031 // 拆分按钮控件
	UIA_StatusBarControlTypeId    ControlTypeId = 50017 // 状态栏控件
	UIA_TabControlTypeId          ControlTypeId = 50018 // 选项卡控件
	UIA_TabItemControlTypeId      ControlTypeId = 50019 // 选项卡项控件
	UIA_TableControlTypeId        ControlTypeId = 50036 // 表格控件
	UIA_TextControlTypeId         ControlTypeId = 50020 // 文本控件
	UIA_ThumbControlTypeId        ControlTypeId = 50027 // 滑块把手控件
	UIA_TitleBarControlTypeId     ControlTypeId = 50037 // 标题栏控件
	UIA_ToolBarControlTypeId      ControlTypeId = 50021 // 工具栏控件
	UIA_ToolTipControlTypeId      ControlTypeId = 50022 // 工具提示控件
	UIA_TreeControlTypeId         ControlTypeId = 50023 // 树控件
	UIA_TreeItemControlTypeId     ControlTypeId = 50024 // 树项控件
	UIA_WindowControlTypeId       ControlTypeId = 50032 // 窗口控件
)

UI Automation 控件类型常量定义 参考: https://learn.microsoft.com/zh-cn/windows/win32/winauto/uiauto-controlpatternmapping

type Element

type Element struct {
	UIAutoElement               *IUIAutomationElement      // 底层 UI Automation 元素接口
	CurrentAcceleratorKey       string                     // 快捷键
	CurrentAccessKey            string                     // 访问键(如 Alt+F)
	CurrentAriaProperties       string                     // ARIA 属性
	CurrentAriaRole             string                     // ARIA 角色
	CurrentAutomationId         string                     // 自动化ID(唯一标识符)
	CurrentBoundingRectangle    *TagRect                   // 边界矩形(位置和大小)
	CurrentClassName            string                     // 类名
	CurrentControllerFor        *IUIAutomationElementArray // 控制器元素数组
	CurrentControlType          ControlTypeId              // 控件类型
	CurrentCulture              int32                      // 文化/区域设置
	CurrentDescribedBy          *IUIAutomationElementArray // 描述元素数组
	CurrentFlowsTo              *IUIAutomationElementArray // 流向元素数组
	CurrentFrameworkId          string                     // 框架ID(如 WPF, Win32)
	CurrentHasKeyboardFocus     int32                      // 是否有键盘焦点
	CurrentHelpText             string                     // 帮助文本
	CurrentIsContentElement     int32                      // 是否为内容元素
	CurrentIsControlElement     int32                      // 是否为控件元素
	CurrentIsDataValidForForm   int32                      // 表单数据是否有效
	CurrentIsEnabled            int32                      // 是否启用
	CurrentIsKeyboardFocusable  int32                      // 是否可获取键盘焦点
	CurrentIsOffscreen          int32                      // 是否在屏幕外
	CurrentIsPassword           int32                      // 是否为密码字段
	CurrentIsRequiredForForm    int32                      // 表单是否必填
	CurrentItemStatus           string                     // 项目状态
	CurrentItemType             string                     // 项目类型
	CurrentLabeledBy            *IUIAutomationElement      // 标签元素
	CurrentLocalizedControlType string                     // 本地化控件类型
	CurrentName                 string                     // 名称
	CurrentNativeWindowHandle   uintptr                    // 原生窗口句柄
	CurrentOrientation          OrientationType            // 方向
	CurrentProcessId            int32                      // 进程ID
	CurrentProviderDescription  string                     // 提供者描述

	SupportedPatterns []PatternId `json:"supported_patterns,omitempty"` // 支持的模式列表
	Child             []*Element  `json:"child,omitempty"`              // 子元素列表
}

Element UI 元素的高级封装结构体 提供了 UI 元素的属性缓存和便捷操作方法

func FindElems

func FindElems(elem *Element, searchFunc SearchFunc) (elems []*Element)

FindElems 在元素树中搜索所有匹配的元素 参数:

  • elem: 起始元素
  • searchFunc: 搜索条件函数

返回: 所有匹配的元素数组

func NewElement

func NewElement(uiaumation *IUIAutomationElement) *Element

NewElement 创建新的 Element 实例 参数:

  • uiaumation: 底层 UI Automation 元素接口

返回: 初始化的 Element 指针

func SearchElem

func SearchElem(elem *Element, searchFunc SearchFunc) *Element

SearchElem 在元素树中搜索匹配的元素(深度优先,返回第一个匹配) 参数:

  • elem: 起始元素
  • searchFunc: 搜索条件函数

返回: 匹配的元素,未找到返回 nil

func TraverseUIElementTree

func TraverseUIElementTree(ppv *IUIAutomation, root *IUIAutomationElement) *Element

TraverseUIElementTree 遍历 UI 元素树并返回高级封装的 Element 结构 使用缓存请求提高性能,减少跨进程通信开销 参数:

  • ppv: UI Automation 接口
  • root: 根元素

返回: 封装后的元素树

func (*Element) AcceleratorKey

func (e *Element) AcceleratorKey() error

AcceleratorKey 获取快捷键属性

func (*Element) AccessKey

func (e *Element) AccessKey() error

AccessKey 获取访问键属性

func (*Element) AriaProperties

func (e *Element) AriaProperties() error

AriaProperties 获取 ARIA 属性

func (*Element) AriaRole

func (e *Element) AriaRole() error

AriaRole 获取 ARIA 角色属性

func (*Element) AutomationId

func (e *Element) AutomationId() error

AutomationId 获取自动化ID属性

func (*Element) BoundingRectangle

func (e *Element) BoundingRectangle()

BoundingRectangle 获取边界矩形属性

func (*Element) ClassName

func (e *Element) ClassName() error

ClassName 获取类名属性

func (*Element) ControlType

func (e *Element) ControlType()

ControlType 获取控件类型

func (*Element) ControllerFor

func (e *Element) ControllerFor()

ControllerFor 获取控制器元素数组

func (*Element) Culture

func (e *Element) Culture()

Culture 获取文化/区域设置

func (*Element) DescribedBy

func (e *Element) DescribedBy()

DescribedBy 获取描述元素数组

func (*Element) FindByAutomationId

func (e *Element) FindByAutomationId(id string) *Element

FindByAutomationId 通过 AutomationId 查找子元素 参数: id - 元素的 AutomationId 返回: 匹配的元素,未找到返回 nil

func (*Element) FindByName

func (e *Element) FindByName(name string) *Element

FindByName 通过名称查找子元素 参数: name - 元素名称 返回: 匹配的元素,未找到返回 nil

func (*Element) FlowsTo

func (e *Element) FlowsTo()

FlowsTo 获取流向元素数组

func (*Element) FormatString

func (e *Element) FormatString() string

FormatString 格式化输出元素的所有属性 返回: 格式化后的字符串

func (*Element) FrameworkId

func (e *Element) FrameworkId() error

FrameworkId 获取框架ID属性

func (*Element) GetExpandCollapsePattern

func (e *Element) GetExpandCollapsePattern() (*IUIAutomationExpandCollapsePattern, error)

GetExpandCollapsePattern 获取 ExpandCollapsePattern 接口 用于展开或折叠树节点、菜单等控件 返回: ExpandCollapsePattern 接口和可能的错误

func (*Element) GetInvokePattern

func (e *Element) GetInvokePattern() (*IUIAutomationInvokePattern, error)

GetInvokePattern 获取 InvokePattern 接口 用于调用按钮等可点击控件 返回: InvokePattern 接口和可能的错误

func (*Element) GetSelectionItemPattern

func (e *Element) GetSelectionItemPattern() (*IUIAutomationSelectionItemPattern, error)

GetSelectionItemPattern 获取 SelectionItemPattern 接口 用于选择列表项等控件 返回: SelectionItemPattern 接口和可能的错误

func (*Element) GetTogglePattern

func (e *Element) GetTogglePattern() (*IUIAutomationTogglePattern, error)

GetTogglePattern 获取 TogglePattern 接口 用于切换复选框等控件的状态 返回: TogglePattern 接口和可能的错误

func (*Element) GetValuePattern

func (e *Element) GetValuePattern() (*IUIAutomationValuePattern, error)

GetValuePattern 获取 ValuePattern 接口 用于设置或获取文本输入控件的值 返回: ValuePattern 接口和可能的错误

func (*Element) HasKeyboardFocus

func (e *Element) HasKeyboardFocus()

HasKeyboardFocus 获取是否有键盘焦点

func (*Element) HelpText

func (e *Element) HelpText() error

HelpText 获取帮助文本属性

func (*Element) IsContentElement

func (e *Element) IsContentElement()

IsContentElement 获取是否为内容元素

func (*Element) IsControlElement

func (e *Element) IsControlElement()

IsControlElement 获取是否为控件元素

func (*Element) IsDataValidForForm

func (e *Element) IsDataValidForForm()

IsDataValidForForm 获取表单数据是否有效

func (*Element) IsEnabled

func (e *Element) IsEnabled()

IsEnabled 获取是否启用

func (*Element) IsKeyboardFocusable

func (e *Element) IsKeyboardFocusable()

IsKeyboardFocusable 获取是否可获取键盘焦点

func (*Element) IsOffscreen

func (e *Element) IsOffscreen()

IsOffscreen 获取是否在屏幕外

func (*Element) IsPassword

func (e *Element) IsPassword()

IsPassword 获取是否为密码字段

func (*Element) IsRequiredForForm

func (e *Element) IsRequiredForForm()

IsRequiredForForm 获取表单是否必填

func (*Element) ItemStatus

func (e *Element) ItemStatus() error

ItemStatus 获取项目状态属性

func (*Element) ItemType

func (e *Element) ItemType() error

ItemType 获取项目类型属性

func (*Element) LabeledBy

func (e *Element) LabeledBy()

LabeledBy 获取标签元素

func (*Element) LocalizedControlType

func (e *Element) LocalizedControlType() error

LocalizedControlType 获取本地化控件类型

func (*Element) Name

func (e *Element) Name() error

Name 获取名称属性

func (*Element) NativeWindowHandle

func (e *Element) NativeWindowHandle()

NativeWindowHandle 获取原生窗口句柄

func (*Element) Orientation

func (e *Element) Orientation()

Orientation 获取方向属性

func (*Element) Populate

func (e *Element) Populate(cached bool)

Populate 填充元素的属性 参数:

  • cached: 是否使用缓存属性(true=缓存属性,false=当前属性)

func (*Element) ProcessId

func (e *Element) ProcessId()

ProcessId 获取进程ID

func (*Element) ProviderDescription

func (e *Element) ProviderDescription() error

ProviderDescription 获取提供者描述

func (*Element) SetUIAutomation

func (e *Element) SetUIAutomation(uiaumation *IUIAutomationElement)

SetUIAutomation 设置底层 UI Automation 元素接口

func (*Element) String

func (e *Element) String() string

String 实现 Stringer 接口

type EventHandler

type EventHandler struct {
	EventId      UIA_EventId                // 事件ID
	Element      *IUIAutomationElement      // 目标元素
	Scope        TreeScope                  // 搜索范围
	CacheRequest *IUIAutomationCacheRequest // 缓存请求
	Handler      *IUIAutomationEventHandler // 事件处理器
}

EventHandler 自动化事件处理器配置

type IAccessible

type IAccessible struct {
	// contains filtered or unexported fields
}

IAccessible 可访问性接口 用于支持辅助功能,如屏幕阅读器等 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/oleacc/nn-oleacc-iaccessible

func NewIAccessible

func NewIAccessible(unk *IDispatch) *IAccessible

NewIAccessible 创建可访问性接口实例 参数: unk - IDispatch 接口 返回: 可访问性接口实例

func (*IAccessible) AccDoDefaultAction

func (v *IAccessible) AccDoDefaultAction(in *VARIANT) error

AccDoDefaultAction 执行默认操作 参数: in - VARIANT 参数 返回: 错误信息

func (*IAccessible) Release

func (v *IAccessible) Release() uint32

Release 释放可访问性接口对象 返回: 引用计数

type IAccessibleVtbl

type IAccessibleVtbl struct {
	// https://learn.microsoft.com/zh-cn/windows/win32/api/oleacc/nn-oleacc-iaccessible
	IDispatchVtbl
	AccDoDefaultAction      uintptr // 执行默认操作
	AccHitTest              uintptr // 命中测试
	AccLocation             uintptr // 获取位置
	AccNavigate             uintptr // 导航(不支持)
	AccSelect               uintptr // 选择
	Get_accChild            uintptr // 获取子元素
	Get_accChildCount       uintptr // 获取子元素数量
	Get_accDefaultAction    uintptr // 获取默认操作
	Get_accDescription      uintptr // 获取描述
	Get_accFocus            uintptr // 获取焦点
	Get_accHelp             uintptr // 获取帮助
	Get_accHelpTopic        uintptr // 获取帮助主题(不支持)
	Get_accKeyboardShortcut uintptr // 获取键盘快捷键
	Get_accName             uintptr // 获取名称
	Get_accParent           uintptr // 获取父元素
	Get_accRole             uintptr // 获取角色
	Get_accSelection        uintptr // 获取选择
	Get_accState            uintptr // 获取状态
	Get_accValue            uintptr // 获取值
	Put_accName             uintptr // 设置名称(不支持)
	Put_accValue            uintptr // 设置值
}

IAccessibleVtbl 可访问性接口虚函数表

type IAnnotationProvider

type IAnnotationProvider struct {
	// contains filtered or unexported fields
}

IAnnotationProvider 注解提供者接口 Windows 8 开始支持,用于 UIA_AnnotationPatternId

func NewIAnnotationProvider

func NewIAnnotationProvider(unk *IUnKnown) *IAnnotationProvider

NewIAnnotationProvider 创建注解提供者实例 参数: unk - IUnKnown 接口 返回: 注解提供者实例

func (*IAnnotationProvider) Get_AnnotationTypeId

func (v *IAnnotationProvider) Get_AnnotationTypeId() int32

Get_AnnotationTypeId 获取注解类型ID 返回: 注解类型ID

type IAnnotationProviderVtbl

type IAnnotationProviderVtbl struct {
	IUnKnownVtbl
	Get_AnnotationTypeId   uintptr // 获取注解类型ID
	Get_AnnotationTypeName uintptr // 获取注解类型名称
	Get_Author             uintptr // 获取作者
	Get_DateTime           uintptr // 获取日期时间
	Get_Target             uintptr // 获取目标
}

IAnnotationProviderVtbl 注解提供者虚函数表

type IDispatch

type IDispatch struct {
	// contains filtered or unexported fields
}

IDispatch 调度接口 COM 中的标准接口,用于支持动态调用和自动化

func (*IDispatch) Release

func (v *IDispatch) Release() uint32

Release 释放调度接口对象 返回: 引用计数

type IDispatchVtbl

type IDispatchVtbl struct {
	IUnKnownVtbl
	GetIDsOfNames    uintptr // 获取名称ID
	GetTypeInfo      uintptr // 获取类型信息
	GetTypeInfoCount uintptr // 获取类型信息数量
	Invoke           uintptr // 调用方法
}

IDispatchVtbl 调度接口虚函数表

type IDropTarget

type IDropTarget struct {
	// contains filtered or unexported fields
}

IDropTarget 拖放目标接口 用于支持拖放操作的目标对象

func NewIDropTarget

func NewIDropTarget(unk *IUnKnown) *IDropTarget

NewIDropTarget 创建拖放目标接口实例 参数: unk - IUnKnown 接口 返回: 拖放目标接口实例

func (*IDropTarget) DragEnter

func (v *IDropTarget) DragEnter() error

DragEnter 处理拖拽进入事件 返回: 错误信息(当前为空实现)

func (*IDropTarget) DragLeave

func (v *IDropTarget) DragLeave() error

DragLeave 处理拖拽离开事件 返回: 错误信息(当前为空实现)

func (*IDropTarget) DragOver

func (v *IDropTarget) DragOver() error

DragOver 处理拖拽经过事件 返回: 错误信息(当前为空实现)

func (*IDropTarget) Drop

func (v *IDropTarget) Drop() error

Drop 处理放置事件 返回: 错误信息(当前为空实现)

type IDropTargetVtbl

type IDropTargetVtbl struct {
	IUnKnownVtbl
	DragEnter uintptr // 拖拽进入
	DragLeave uintptr // 拖拽离开
	DragOver  uintptr // 拖拽经过
	Drop      uintptr // 放置
}

IDropTargetVtbl 拖放目标接口虚函数表 TODO:: IDropTarget method - 需要实现具体方法

type IRawElementProviderSimple

type IRawElementProviderSimple struct {
	// contains filtered or unexported fields
}

IRawElementProviderSimple 简单原始元素提供者接口

type IRawElementProviderSimpleVtbl

type IRawElementProviderSimpleVtbl struct {
	IUnKnownVtbl
	Get_HostRawElementProvider uintptr // 获取宿主原始元素提供者
	Get_ProviderOptions        uintptr // 获取提供者选项
	GetPatternProvider         uintptr // 获取模式提供者
	GetPropertyValue           uintptr // 获取属性值
}

IRawElementProviderSimpleVtbl 简单原始元素提供者虚函数表

type IRichEditUiaInformation

type IRichEditUiaInformation struct {
	// contains filtered or unexported fields
}

IRichEditUiaInformation Rich Edit UI Automation 信息接口

type IRichEditUiaInformationVtbl

type IRichEditUiaInformationVtbl struct {
	IUnKnownVtbl
	GetBoundaryRectangle uintptr // 获取边界矩形
	IsVisible            uintptr // 是否可见
}

IRichEditUiaInformationVtbl Rich Edit UI Automation 信息接口虚函数表

type IUIAutomation

type IUIAutomation struct {
	// contains filtered or unexported fields
}

IUIAutomation UI Automation 核心接口 提供创建 UI Automation 对象和访问 UI 元素的方法

func NewIUIAutomation

func NewIUIAutomation(unk *IUnKnown) *IUIAutomation

NewIUIAutomation 创建 IUIAutomation 实例 参数: unk - IUnKnown 接口 返回: IUIAutomation 实例

func (*IUIAutomation) AddAutomationEventHandler

func (v *IUIAutomation) AddAutomationEventHandler(opt *EventHandler) error

AddAutomationEventHandler 添加自动化事件处理器 参数: opt - 事件处理器配置 返回: 错误信息

func (*IUIAutomation) AddFocusChangedEventHandler

func (v *IUIAutomation) AddFocusChangedEventHandler(in *IUIAutomationCacheRequest, in2 *IUIAutomationFocusChangedEventHandler) error

AddFocusChangedEventHandler 添加焦点变更事件处理器 参数:

  • in: 缓存请求
  • in2: 焦点变更事件处理器

返回: 错误信息

func (*IUIAutomation) AddPropertyChangedEventHandler

func (v *IUIAutomation) AddPropertyChangedEventHandler(opt *ChangeEventHandler) error

AddPropertyChangedEventHandler 添加属性变更事件处理器 参数: opt - 属性变更事件处理器配置 返回: 错误信息

func (*IUIAutomation) AddPropertyChangedEventHandlerNativeArray

func (v *IUIAutomation) AddPropertyChangedEventHandlerNativeArray(opt *ChangeEventHandlerNativeArray) error

AddPropertyChangedEventHandlerNativeArray 添加属性变更事件处理器(原生数组版本) 参数: opt - 属性变更事件处理器配置 返回: 错误信息

func (*IUIAutomation) AddStructureChangedEventHandler

func (v *IUIAutomation) AddStructureChangedEventHandler(opt *StructureChangedEventHandler) error

AddStructureChangedEventHandler 添加结构变更事件处理器 参数: opt - 结构变更事件处理器配置 返回: 错误信息

func (*IUIAutomation) CheckNotSupported

func (v *IUIAutomation) CheckNotSupported(in *VARIANT) (int32, error)

CheckNotSupported 检查 VARIANT 值是否为"不支持" 参数: in - VARIANT 值 返回: 是否不支持,以及可能的错误

func (*IUIAutomation) CompareElements

func (v *IUIAutomation) CompareElements(in, in2 *IUIAutomationElement) (int32, error)

CompareElements 比较两个 UI 元素是否相同 参数:

  • in: 第一个元素
  • in2: 第二个元素

返回: 是否相同(非0表示相同),以及可能的错误

func (*IUIAutomation) CompareRuntimeIds

func (v *IUIAutomation) CompareRuntimeIds(in, in2 *TagSafeArray) (int32, error)

CompareRuntimeIds 比较两个运行时ID是否相同 参数:

  • in: 第一个运行时ID数组
  • in2: 第二个运行时ID数组

返回: 是否相同(非0表示相同),以及可能的错误

func (*IUIAutomation) CreateAndCondition

func (v *IUIAutomation) CreateAndCondition(in, in2 *IUIAutomationCondition) (*IUIAutomationCondition, error)

CreateAndCondition 创建 AND 条件(两个条件都必须满足) 参数:

  • in: 第一个条件
  • in2: 第二个条件

返回: 组合后的条件,以及可能的错误

func (*IUIAutomation) CreateAndConditionFromArray

func (v *IUIAutomation) CreateAndConditionFromArray(in *TagSafeArray) (*IUIAutomationCondition, error)

func (*IUIAutomation) CreateAndConditionFromNativeArray

func (v *IUIAutomation) CreateAndConditionFromNativeArray(in *IUIAutomationCondition, in2 int32) (*IUIAutomationCondition, error)

func (*IUIAutomation) CreateCacheRequest

func (v *IUIAutomation) CreateCacheRequest() (*IUIAutomationCacheRequest, error)

CreateCacheRequest 创建缓存请求对象 用于批量获取元素属性,减少跨进程通信开销 返回: 缓存请求对象,以及可能的错误

func (*IUIAutomation) CreateFalseCondition

func (v *IUIAutomation) CreateFalseCondition() (*IUIAutomationCondition, error)

CreateFalseCondition 创建始终为 False 的条件 返回: False 条件,以及可能的错误

func (*IUIAutomation) CreateNotCondition

func (v *IUIAutomation) CreateNotCondition(in *IUIAutomationCondition) (*IUIAutomationCondition, error)

CreateNotCondition 创建 NOT 条件(对条件取反) 参数: in - 要取反的条件 返回: 取反后的条件,以及可能的错误

func (*IUIAutomation) CreateOrCondition

func (v *IUIAutomation) CreateOrCondition(in, in2 *IUIAutomationCondition) (*IUIAutomationCondition, error)

CreateOrCondition 创建 OR 条件(任一条件满足即可) 参数:

  • in: 第一个条件
  • in2: 第二个条件

返回: 组合后的条件,以及可能的错误

func (*IUIAutomation) CreateOrConditionFromArray

func (v *IUIAutomation) CreateOrConditionFromArray(in *TagSafeArray) (*IUIAutomationCondition, error)

func (*IUIAutomation) CreateOrConditionFromNativeArray

func (v *IUIAutomation) CreateOrConditionFromNativeArray(in *IUIAutomationCondition, in2 int32) (*IUIAutomationCondition, error)

func (*IUIAutomation) CreatePropertyCondition

func (v *IUIAutomation) CreatePropertyCondition(id PropertyId, value VARIANT) (*IUIAutomationCondition, error)

CreatePropertyCondition 创建属性条件(64位版本) 用于根据属性值创建查找条件 参数:

  • id: 属性ID
  • value: 属性值(VARIANT)

返回: 条件接口和可能的错误

func (*IUIAutomation) CreatePropertyConditionEx

func (v *IUIAutomation) CreatePropertyConditionEx(in *PropertyId, in2 *VARIANT, in3 PropertyConditionFlags) (*IUIAutomationCondition, error)

func (*IUIAutomation) CreateProxyFactoryEntry

func (*IUIAutomation) CreateTreeWalker

CreateTreeWalker 创建树遍历器 用于遍历 UI 元素树 参数: in - 遍历条件 返回: 树遍历器,以及可能的错误

func (*IUIAutomation) CreateTrueCondition

func (v *IUIAutomation) CreateTrueCondition() *IUIAutomationCondition

CreateTrueCondition 创建始终为 True 的条件 用于匹配所有元素 返回: True 条件

func (*IUIAutomation) ElementFromHandle

func (v *IUIAutomation) ElementFromHandle(in uintptr) (*IUIAutomationElement, error)

ElementFromHandle 从窗口句柄获取 UI 元素 参数: in - 窗口句柄 返回: UI 元素,以及可能的错误

func (*IUIAutomation) ElementFromHandleBuildCache

func (v *IUIAutomation) ElementFromHandleBuildCache(in uintptr, in2 *IUIAutomationCacheRequest) (*IUIAutomationElement, error)

func (*IUIAutomation) ElementFromIAccessible

func (v *IUIAutomation) ElementFromIAccessible(in *IAccessible, in2 int32) (*IUIAutomationElement, error)

func (*IUIAutomation) ElementFromIAccessibleBuildCache

func (v *IUIAutomation) ElementFromIAccessibleBuildCache(in *IAccessible, in2 int32, in3 *IUIAutomationCacheRequest) (*IUIAutomationElement, error)

func (*IUIAutomation) ElementFromPoint

func (v *IUIAutomation) ElementFromPoint(in *TagPoint) (*IUIAutomationElement, error)

func (*IUIAutomation) ElementFromPointBuildCache

func (v *IUIAutomation) ElementFromPointBuildCache(in *TagPoint, in2 *IUIAutomationCacheRequest) (*IUIAutomationElement, error)

func (*IUIAutomation) GetFocusedElement

func (v *IUIAutomation) GetFocusedElement() (*IUIAutomationElement, error)

func (*IUIAutomation) GetFocusedElementBuildCache

func (v *IUIAutomation) GetFocusedElementBuildCache(in *IUIAutomationCacheRequest) (*IUIAutomationElement, error)

func (*IUIAutomation) GetPatternProgrammaticName

func (v *IUIAutomation) GetPatternProgrammaticName(in PatternId) (string, error)

func (*IUIAutomation) GetPropertyProgrammaticName

func (v *IUIAutomation) GetPropertyProgrammaticName(in PropertyId) (string, error)

func (*IUIAutomation) GetRootElement

func (v *IUIAutomation) GetRootElement() (*IUIAutomationElement, error)

GetRootElement 获取桌面根元素 桌面是所有 UI 元素的根节点 返回: 根元素,以及可能的错误

func (*IUIAutomation) GetRootElementBuildCache

func (v *IUIAutomation) GetRootElementBuildCache(in *IUIAutomationCacheRequest) (*IUIAutomationElement, error)

GetRootElementBuildCache 获取带缓存的桌面根元素 参数: in - 缓存请求 返回: 根元素和可能的错误

func (*IUIAutomation) Get_ContentViewCondition

func (v *IUIAutomation) Get_ContentViewCondition() *IUIAutomationCondition

func (*IUIAutomation) Get_ContentViewWalker

func (v *IUIAutomation) Get_ContentViewWalker() *IUIAutomationTreeWalker

func (*IUIAutomation) Get_ControlViewCondition

func (v *IUIAutomation) Get_ControlViewCondition() *IUIAutomationCondition

func (*IUIAutomation) Get_ControlViewWalker

func (v *IUIAutomation) Get_ControlViewWalker() *IUIAutomationTreeWalker

func (*IUIAutomation) Get_ProxyFactoryMapping

func (v *IUIAutomation) Get_ProxyFactoryMapping() *IUIAutomationProxyFactoryMapping

func (*IUIAutomation) Get_RawViewCondition

func (v *IUIAutomation) Get_RawViewCondition() *IUIAutomationCondition

func (*IUIAutomation) Get_RawViewWalker

func (v *IUIAutomation) Get_RawViewWalker() *IUIAutomationTreeWalker

func (*IUIAutomation) Get_ReservedMixedAttributeValue

func (v *IUIAutomation) Get_ReservedMixedAttributeValue() *IUnKnown

func (*IUIAutomation) Get_ReservedNotSupportedValue

func (v *IUIAutomation) Get_ReservedNotSupportedValue() *IUnKnown

func (*IUIAutomation) IntNativeArrayToSafeArray

func (v *IUIAutomation) IntNativeArrayToSafeArray(in, in2 int32) (*TagSafeArray, error)

IntNativeArrayToSafeArray 将整数数组转换为安全数组 参数:

  • in: 整数数组
  • in2: 数组长度

返回: 安全数组和可能的错误

func (*IUIAutomation) IntSafeArrayToNativeArray

func (v *IUIAutomation) IntSafeArrayToNativeArray(in *TagSafeArray) (int32, int32, error)

IntSafeArrayToNativeArray 将安全数组转换为整数数组 参数: in - 安全数组 返回: 数组指针、数组长度和可能的错误

func (*IUIAutomation) PollForPotentialSupportedPatterns

func (v *IUIAutomation) PollForPotentialSupportedPatterns(in *IUIAutomationElement) (*TagSafeArray, *TagSafeArray, error)

PollForPotentialSupportedPatterns 轮询潜在支持的模式 参数: in - UI 元素 返回: 模式ID数组、模式名称数组和可能的错误

func (*IUIAutomation) PollForPotentialSupportedProperties

func (v *IUIAutomation) PollForPotentialSupportedProperties(in *IUIAutomationElement) (*TagSafeArray, *TagSafeArray, error)

PollForPotentialSupportedProperties 轮询潜在支持的属性 参数: in - UI 元素 返回: 属性ID数组、属性名称数组和可能的错误

func (*IUIAutomation) RectToVariant

func (v *IUIAutomation) RectToVariant(in *TagRect) (*VARIANT, error)

RectToVariant 将矩形转换为 VARIANT 参数: in - 矩形结构 返回: VARIANT 和可能的错误

func (*IUIAutomation) Release

func (v *IUIAutomation) Release() uint32

Release 释放 UI Automation 对象 返回: 引用计数

func (*IUIAutomation) RemoveAllEventHandlers

func (v *IUIAutomation) RemoveAllEventHandlers() error

RemoveAllEventHandlers 移除所有事件处理器 返回: 错误信息

func (*IUIAutomation) RemoveAutomationEventHandler

func (v *IUIAutomation) RemoveAutomationEventHandler(in UIA_EventId, in2 *IUIAutomationElement, in3 *IUIAutomationEventHandler) error

RemoveAutomationEventHandler 移除自动化事件处理器 参数:

  • in: 事件ID
  • in2: UI 元素
  • in3: 事件处理器

返回: 错误信息

func (*IUIAutomation) RemoveFocusChangedEventHandler

func (v *IUIAutomation) RemoveFocusChangedEventHandler(in *IUIAutomationFocusChangedEventHandler) error

RemoveFocusChangedEventHandler 移除焦点变更事件处理器 参数: in - 焦点变更事件处理器 返回: 错误信息

func (*IUIAutomation) RemovePropertyChangedEventHandler

func (v *IUIAutomation) RemovePropertyChangedEventHandler(in *IUIAutomationElement, in2 *IUnKnown) error

RemovePropertyChangedEventHandler 移除属性变更事件处理器 参数:

  • in: UI 元素
  • in2: 事件处理器

返回: 错误信息 注意: IUIAutomationPropertyChangedEventHandler 类型未定义,暂时使用 IUnKnown

func (*IUIAutomation) RemoveStructureChangedEventHandler

func (v *IUIAutomation) RemoveStructureChangedEventHandler(in *IUIAutomationElement, in2 *IUIAutomationStructureChangedEventHandler) error

RemoveStructureChangedEventHandler 移除结构变更事件处理器 参数:

  • in: UI 元素
  • in2: 结构变更事件处理器

返回: 错误信息

func (*IUIAutomation) SafeArrayToRectNativeArray

func (v *IUIAutomation) SafeArrayToRectNativeArray(in *TagSafeArray) (*TagRect, int32, error)

SafeArrayToRectNativeArray 将安全数组转换为矩形原生数组 参数: in - 安全数组 返回: 矩形数组指针、数组长度和可能的错误

func (*IUIAutomation) VariantToRect

func (v *IUIAutomation) VariantToRect(in *VARIANT) (*TagRect, error)

VariantToRect 将 VARIANT 转换为矩形 参数: in - VARIANT 返回: 矩形结构和可能的错误

type IUIAutomationAndCondition

type IUIAutomationAndCondition struct {
	// contains filtered or unexported fields
}

IUIAutomationAndCondition AND 条件接口 用于组合多个条件,所有条件都必须满足

func (*IUIAutomationAndCondition) Release

func (v *IUIAutomationAndCondition) Release() uint32

Release 释放 AND 条件对象 返回: 引用计数

type IUIAutomationAndConditionVtbl

type IUIAutomationAndConditionVtbl struct {
	IUIAutomationConditionVtbl

	Get_ChildCount           uintptr // 获取子条件数量
	GetChildren              uintptr // 获取子条件数组(SAFEARRAY)
	GetChildrenAsNativeArray uintptr // 获取子条件数组(原生数组)
}

IUIAutomationAndConditionVtbl AND 条件接口虚函数表

type IUIAutomationBoolCondition

type IUIAutomationBoolCondition struct {
	// contains filtered or unexported fields
}

IUIAutomationBoolCondition 布尔条件接口 用于创建 True 或 False 条件

func (*IUIAutomationBoolCondition) Release

func (v *IUIAutomationBoolCondition) Release() uint32

Release 释放布尔条件对象 返回: 引用计数

type IUIAutomationBoolConditionVtbl

type IUIAutomationBoolConditionVtbl struct {
	IUIAutomationConditionVtbl
	Get_BooleanValue uintptr // 获取布尔值
}

IUIAutomationBoolConditionVtbl 布尔条件接口虚函数表

type IUIAutomationCacheRequest

type IUIAutomationCacheRequest struct {
	// contains filtered or unexported fields
}

func (*IUIAutomationCacheRequest) AddPattern

func (v *IUIAutomationCacheRequest) AddPattern(patternId PatternId) error

func (*IUIAutomationCacheRequest) AddProperty

func (v *IUIAutomationCacheRequest) AddProperty(propertyId PropertyId) error

func (*IUIAutomationCacheRequest) Put_AutomationElementMode

func (v *IUIAutomationCacheRequest) Put_AutomationElementMode(mode int32) error

func (*IUIAutomationCacheRequest) Put_TreeScope

func (v *IUIAutomationCacheRequest) Put_TreeScope(scope TreeScope) error

func (*IUIAutomationCacheRequest) Release

func (v *IUIAutomationCacheRequest) Release() uint32

type IUIAutomationCacheRequestVtbl

type IUIAutomationCacheRequestVtbl struct {
	IUnKnownVtbl
	AddPattern                uintptr
	AddProperty               uintptr
	Clone                     uintptr
	Get_AutomationElementMode uintptr
	Get_TreeFilter            uintptr
	Get_TreeScope             uintptr
	Put_AutomationElementMode uintptr
	Put_TreeFilter            uintptr
	Put_TreeScope             uintptr
}

type IUIAutomationCondition

type IUIAutomationCondition struct {
	// contains filtered or unexported fields
}

IUIAutomationCondition UI Automation 条件接口基类 用于创建元素搜索条件,是所有条件类型的基类

func CreateTrueCondition

func CreateTrueCondition(v *IUIAutomation) *IUIAutomationCondition

CreateTrueCondition 创建真条件(辅助函数) 参数: v - UI Automation 接口 返回: 条件接口

func GetChild

GetChild 获取 NOT 条件的子条件 参数: v - NOT 条件接口 返回: 子条件接口和可能的错误

func GetChildrenAsNativeArray

func GetChildrenAsNativeArray(v *IUIAutomationAndCondition) (*IUIAutomationCondition, int32, error)

GetChildrenAsNativeArray 获取 AND 条件中的子条件数组(原生数组格式) 参数: v - AND 条件接口 返回: 条件数组、数组长度和可能的错误

func (*IUIAutomationCondition) Release

func (v *IUIAutomationCondition) Release() uint32

Release 释放条件对象 返回: 引用计数

type IUIAutomationConditionVtbl

type IUIAutomationConditionVtbl struct {
	IUnKnownVtbl
}

IUIAutomationConditionVtbl 条件接口虚函数表

type IUIAutomationElement

type IUIAutomationElement struct {
	// contains filtered or unexported fields
}

IUIAutomationElement UI Automation 元素接口 代表 UI 树中的一个元素,可以是窗口、按钮、文本框等

func ElementFromHandle

func ElementFromHandle(v *IUIAutomation, hwnd uintptr) (*IUIAutomationElement, error)

ElementFromHandle 从窗口句柄获取元素(辅助函数) 参数:

  • v: UI Automation 接口
  • hwnd: 窗口句柄

返回: UI 元素和可能的错误

func NewIUIAutomationElement

func NewIUIAutomationElement(unk *IUnKnown) *IUIAutomationElement

func (*IUIAutomationElement) BuildUpdatedCache

func (v *IUIAutomationElement) BuildUpdatedCache(cacheRequest *IUIAutomationCacheRequest) (*IUIAutomationElement, error)

func (*IUIAutomationElement) FindAll

func (*IUIAutomationElement) FindAllBuildCache

func (v *IUIAutomationElement) FindAllBuildCache(scope TreeScope, condition *IUIAutomationCondition, cacheRequest *IUIAutomationCacheRequest) (*IUIAutomationElementArray, error)

func (*IUIAutomationElement) FindFirst

func (*IUIAutomationElement) GetCachedPattern

func (v *IUIAutomationElement) GetCachedPattern(patternId PatternId) (*IUnKnown, error)

func (*IUIAutomationElement) GetClickablePoint

func (v *IUIAutomationElement) GetClickablePoint() (*TagPoint, int32, error)

func (*IUIAutomationElement) GetCurrentPattern

func (v *IUIAutomationElement) GetCurrentPattern(patternId PatternId) (*IUnKnown, error)

func (*IUIAutomationElement) GetCurrentPatternAs

func (v *IUIAutomationElement) GetCurrentPatternAs(patternId PatternId, riid *syscall.GUID) (unsafe.Pointer, error)

func (*IUIAutomationElement) GetCurrentPropertyValue

func (v *IUIAutomationElement) GetCurrentPropertyValue(id PropertyId) (*VARIANT, error)

func (*IUIAutomationElement) GetCurrentPropertyValueEx

func (v *IUIAutomationElement) GetCurrentPropertyValueEx(id PropertyId, defaultVal int32) (*VARIANT, error)

func (*IUIAutomationElement) GetRuntimeId

func (v *IUIAutomationElement) GetRuntimeId() (*TagSafeArray, error)

func (*IUIAutomationElement) Get_CachedAutomationId

func (v *IUIAutomationElement) Get_CachedAutomationId() (string, error)

func (*IUIAutomationElement) Get_CachedClassName

func (v *IUIAutomationElement) Get_CachedClassName() (string, error)

func (*IUIAutomationElement) Get_CachedControlType

func (v *IUIAutomationElement) Get_CachedControlType() ControlTypeId

func (*IUIAutomationElement) Get_CachedIsEnabled

func (v *IUIAutomationElement) Get_CachedIsEnabled() int32

func (*IUIAutomationElement) Get_CachedLocalizedControlType

func (v *IUIAutomationElement) Get_CachedLocalizedControlType() (string, error)

func (*IUIAutomationElement) Get_CachedName

func (v *IUIAutomationElement) Get_CachedName() (string, error)

func (*IUIAutomationElement) Get_CachedProcessId

func (v *IUIAutomationElement) Get_CachedProcessId() int32

func (*IUIAutomationElement) Get_CurrentAcceleratorKey

func (v *IUIAutomationElement) Get_CurrentAcceleratorKey() (string, error)

func (*IUIAutomationElement) Get_CurrentAccessKey

func (v *IUIAutomationElement) Get_CurrentAccessKey() (string, error)

func (*IUIAutomationElement) Get_CurrentAriaProperties

func (v *IUIAutomationElement) Get_CurrentAriaProperties() (string, error)

func (*IUIAutomationElement) Get_CurrentAriaRole

func (v *IUIAutomationElement) Get_CurrentAriaRole() (string, error)

func (*IUIAutomationElement) Get_CurrentAutomationId

func (v *IUIAutomationElement) Get_CurrentAutomationId() (string, error)

func (*IUIAutomationElement) Get_CurrentBoundingRectangle

func (v *IUIAutomationElement) Get_CurrentBoundingRectangle() *TagRect

func (*IUIAutomationElement) Get_CurrentClassName

func (v *IUIAutomationElement) Get_CurrentClassName() (string, error)

func (*IUIAutomationElement) Get_CurrentControlType

func (v *IUIAutomationElement) Get_CurrentControlType() ControlTypeId

func (*IUIAutomationElement) Get_CurrentControllerFor

func (v *IUIAutomationElement) Get_CurrentControllerFor() *IUIAutomationElementArray

func (*IUIAutomationElement) Get_CurrentCulture

func (v *IUIAutomationElement) Get_CurrentCulture() int32

func (*IUIAutomationElement) Get_CurrentDescribedBy

func (v *IUIAutomationElement) Get_CurrentDescribedBy() *IUIAutomationElementArray

func (*IUIAutomationElement) Get_CurrentFlowsTo

func (v *IUIAutomationElement) Get_CurrentFlowsTo() *IUIAutomationElementArray

func (*IUIAutomationElement) Get_CurrentFrameworkId

func (v *IUIAutomationElement) Get_CurrentFrameworkId() (string, error)

func (*IUIAutomationElement) Get_CurrentHasKeyboardFocus

func (v *IUIAutomationElement) Get_CurrentHasKeyboardFocus() int32

func (*IUIAutomationElement) Get_CurrentHelpText

func (v *IUIAutomationElement) Get_CurrentHelpText() (string, error)

func (*IUIAutomationElement) Get_CurrentIsContentElement

func (v *IUIAutomationElement) Get_CurrentIsContentElement() int32

func (*IUIAutomationElement) Get_CurrentIsControlElement

func (v *IUIAutomationElement) Get_CurrentIsControlElement() int32

func (*IUIAutomationElement) Get_CurrentIsDataValidForForm

func (v *IUIAutomationElement) Get_CurrentIsDataValidForForm() int32

func (*IUIAutomationElement) Get_CurrentIsEnabled

func (v *IUIAutomationElement) Get_CurrentIsEnabled() int32

func (*IUIAutomationElement) Get_CurrentIsKeyboardFocusable

func (v *IUIAutomationElement) Get_CurrentIsKeyboardFocusable() int32

func (*IUIAutomationElement) Get_CurrentIsOffscreen

func (v *IUIAutomationElement) Get_CurrentIsOffscreen() int32

func (*IUIAutomationElement) Get_CurrentIsPassword

func (v *IUIAutomationElement) Get_CurrentIsPassword() int32

func (*IUIAutomationElement) Get_CurrentIsRequiredForForm

func (v *IUIAutomationElement) Get_CurrentIsRequiredForForm() int32

func (*IUIAutomationElement) Get_CurrentItemStatus

func (v *IUIAutomationElement) Get_CurrentItemStatus() (string, error)

func (*IUIAutomationElement) Get_CurrentItemType

func (v *IUIAutomationElement) Get_CurrentItemType() (string, error)

func (*IUIAutomationElement) Get_CurrentLabeledBy

func (v *IUIAutomationElement) Get_CurrentLabeledBy() *IUIAutomationElement

func (*IUIAutomationElement) Get_CurrentLocalizedControlType

func (v *IUIAutomationElement) Get_CurrentLocalizedControlType() (string, error)

func (*IUIAutomationElement) Get_CurrentName

func (v *IUIAutomationElement) Get_CurrentName() (string, error)

func (*IUIAutomationElement) Get_CurrentNativeWindowHandle

func (v *IUIAutomationElement) Get_CurrentNativeWindowHandle() uintptr

func (*IUIAutomationElement) Get_CurrentOrientation

func (v *IUIAutomationElement) Get_CurrentOrientation() OrientationType

func (*IUIAutomationElement) Get_CurrentProcessId

func (v *IUIAutomationElement) Get_CurrentProcessId() int32

func (*IUIAutomationElement) Get_CurrentProviderDescription

func (v *IUIAutomationElement) Get_CurrentProviderDescription() (string, error)

func (*IUIAutomationElement) Release

func (v *IUIAutomationElement) Release() uint32

Release 释放 UI 元素对象 返回: 引用计数

func (*IUIAutomationElement) SetFocus

func (v *IUIAutomationElement) SetFocus() error

type IUIAutomationElementArray

type IUIAutomationElementArray struct {
	// contains filtered or unexported fields
}

func NewIUIAutomationElementArray

func NewIUIAutomationElementArray(unk *IUnKnown) *IUIAutomationElementArray

func (*IUIAutomationElementArray) GetElement

func (*IUIAutomationElementArray) Get_Length

func (v *IUIAutomationElementArray) Get_Length() int32

func (*IUIAutomationElementArray) Release

func (v *IUIAutomationElementArray) Release() uint32

type IUIAutomationElementArrayVtbl

type IUIAutomationElementArrayVtbl struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr

	Get_Length uintptr
	GetElement uintptr
}

type IUIAutomationElementVtbl

type IUIAutomationElementVtbl struct {
	IUnKnownVtbl

	SetFocus                        uintptr // 设置焦点
	GetRuntimeId                    uintptr // 获取运行时ID
	FindFirst                       uintptr // 查找第一个匹配元素
	FindAll                         uintptr // 查找所有匹配元素
	FindFirstBuildCache             uintptr // 查找第一个匹配元素并构建缓存
	FindAllBuildCache               uintptr // 查找所有匹配元素并构建缓存
	BuildUpdatedCache               uintptr // 构建更新缓存
	GetCurrentPropertyValue         uintptr // 获取当前属性值
	GetCurrentPropertyValueEx       uintptr // 获取当前属性值(扩展)
	GetCachedPropertyValue          uintptr // 获取缓存属性值
	GetCachedPropertyValueEx        uintptr // 获取缓存属性值(扩展)
	GetCurrentPatternAs             uintptr // 获取当前模式
	GetCachedPatternAs              uintptr
	GetCurrentPattern               uintptr
	GetCachedPattern                uintptr
	GetCachedParent                 uintptr
	GetCachedChildren               uintptr
	Get_CurrentProcessId            uintptr
	Get_CurrentControlType          uintptr
	Get_CurrentLocalizedControlType uintptr
	Get_CurrentName                 uintptr
	Get_CurrentAcceleratorKey       uintptr
	Get_CurrentAccessKey            uintptr
	Get_CurrentHasKeyboardFocus     uintptr
	Get_CurrentIsKeyboardFocusable  uintptr
	Get_CurrentIsEnabled            uintptr
	Get_CurrentAutomationId         uintptr
	Get_CurrentClassName            uintptr
	Get_CurrentHelpText             uintptr
	Get_CurrentCulture              uintptr
	Get_CurrentIsControlElement     uintptr
	Get_CurrentIsContentElement     uintptr
	Get_CurrentIsPassword           uintptr
	Get_CurrentNativeWindowHandle   uintptr
	Get_CurrentItemType             uintptr
	Get_CurrentIsOffscreen          uintptr
	Get_CurrentOrientation          uintptr
	Get_CurrentFrameworkId          uintptr
	Get_CurrentIsRequiredForForm    uintptr
	Get_CurrentItemStatus           uintptr
	Get_CurrentBoundingRectangle    uintptr
	Get_CurrentLabeledBy            uintptr
	Get_CurrentAriaRole             uintptr
	Get_CurrentAriaProperties       uintptr
	Get_CurrentIsDataValidForForm   uintptr
	Get_CurrentControllerFor        uintptr
	Get_CurrentDescribedBy          uintptr
	Get_CurrentFlowsTo              uintptr
	Get_CurrentProviderDescription  uintptr
	Get_CachedProcessId             uintptr
	Get_CachedControlType           uintptr
	Get_CachedLocalizedControlType  uintptr
	Get_CachedName                  uintptr
	Get_CachedAcceleratorKey        uintptr
	Get_CachedAccessKey             uintptr
	Get_CachedHasKeyboardFocus      uintptr
	Get_CachedIsKeyboardFocusable   uintptr
	Get_CachedIsEnabled             uintptr
	Get_CachedAutomationId          uintptr
	Get_CachedClassName             uintptr
	Get_CachedHelpText              uintptr
	Get_CachedCulture               uintptr
	Get_CachedIsControlElement      uintptr
	Get_CachedIsContentElement      uintptr
	Get_CachedIsPassword            uintptr
	Get_CachedNativeWindowHandle    uintptr
	Get_CachedItemType              uintptr
	Get_CachedIsOffscreen           uintptr
	Get_CachedOrientation           uintptr
	Get_CachedFrameworkId           uintptr
	Get_CachedIsRequiredForForm     uintptr
	Get_CachedItemStatus            uintptr
	Get_CachedBoundingRectangle     uintptr
	Get_CachedLabeledBy             uintptr
	Get_CachedAriaRole              uintptr
	Get_CachedAriaProperties        uintptr
	Get_CachedIsDataValidForForm    uintptr
	Get_CachedControllerFor         uintptr
	Get_CachedDescribedBy           uintptr
	Get_CachedFlowsTo               uintptr
	Get_CachedProviderDescription   uintptr
	GetClickablePoint               uintptr
}

IUIAutomationElementVtbl UI Automation 元素接口虚函数表

type IUIAutomationEventHandler

type IUIAutomationEventHandler struct {
	// contains filtered or unexported fields
}

func NewIUIAutomationEventHandler

func NewIUIAutomationEventHandler(unk *IUnKnown) *IUIAutomationEventHandler

func (*IUIAutomationEventHandler) HandleAutomationEvent

func (v *IUIAutomationEventHandler) HandleAutomationEvent(in *IUIAutomationElement, in2 UIA_EventId) error

func (*IUIAutomationEventHandler) Release

func (v *IUIAutomationEventHandler) Release() uint32

type IUIAutomationEventHandlerVtbl

type IUIAutomationEventHandlerVtbl struct {
	IUnKnownVtbl
	HandleAutomationEvent uintptr
}

type IUIAutomationExpandCollapsePattern

type IUIAutomationExpandCollapsePattern struct {
	// contains filtered or unexported fields
}

IUIAutomationExpandCollapsePattern 展开/折叠模式接口 用于展开或折叠树节点、菜单等控件

func (*IUIAutomationExpandCollapsePattern) Collapse

Collapse 折叠控件 返回: 错误信息

func (*IUIAutomationExpandCollapsePattern) Expand

Expand 展开控件 返回: 错误信息

func (*IUIAutomationExpandCollapsePattern) Release

Release 释放展开/折叠模式对象 返回: 引用计数

type IUIAutomationExpandCollapsePatternVtbl

type IUIAutomationExpandCollapsePatternVtbl struct {
	IUnKnownVtbl
	Expand                         uintptr // 展开
	Collapse                       uintptr // 折叠
	Get_CurrentExpandCollapseState uintptr // 获取当前展开/折叠状态
	Get_CachedExpandCollapseState  uintptr // 获取缓存展开/折叠状态
}

IUIAutomationExpandCollapsePatternVtbl 展开/折叠模式虚函数表

type IUIAutomationFocusChangedEventHandler

type IUIAutomationFocusChangedEventHandler struct {
	// contains filtered or unexported fields
}

func NewIUIAutomationFocusChangedEventHandler

func NewIUIAutomationFocusChangedEventHandler(unk *IUnKnown) *IUIAutomationFocusChangedEventHandler

func (*IUIAutomationFocusChangedEventHandler) HandleFocusChangedEvent

func (v *IUIAutomationFocusChangedEventHandler) HandleFocusChangedEvent(in *IUIAutomationElement) error

func (*IUIAutomationFocusChangedEventHandler) Release

type IUIAutomationFocusChangedEventHandlerVtbl

type IUIAutomationFocusChangedEventHandlerVtbl struct {
	IUnKnownVtbl
	HandleFocusChangedEvent uintptr
}

type IUIAutomationInvokePattern

type IUIAutomationInvokePattern struct {
	// contains filtered or unexported fields
}

IUIAutomationInvokePattern 调用模式接口 用于调用按钮等可点击控件

func NewIUIAutomationInvokePattern

func NewIUIAutomationInvokePattern(unk *IUnKnown) *IUIAutomationInvokePattern

NewIUIAutomationInvokePattern 创建调用模式实例 参数: unk - IUnKnown 接口 返回: 调用模式实例

func (*IUIAutomationInvokePattern) DoubleClick

func (v *IUIAutomationInvokePattern) DoubleClick(interval int) error

DoubleClick 双击控件(调用两次 Invoke) 参数:

  • interval: 两次点击之间的间隔时间(毫秒)

返回: 错误信息

func (*IUIAutomationInvokePattern) Invoke

func (v *IUIAutomationInvokePattern) Invoke() error

Invoke 调用控件(如点击按钮) 返回: 错误信息

func (*IUIAutomationInvokePattern) Release

func (v *IUIAutomationInvokePattern) Release() uint32

Release 释放调用模式对象 返回: 引用计数

type IUIAutomationInvokePatternVtbl

type IUIAutomationInvokePatternVtbl struct {
	IUnKnownVtbl
	Invoke uintptr // 调用控件
}

IUIAutomationInvokePatternVtbl 调用模式虚函数表

type IUIAutomationLegacyIAccessiblePattern

type IUIAutomationLegacyIAccessiblePattern struct {
	// contains filtered or unexported fields
}

IUIAutomationLegacyIAccessiblePattern 旧版 IAccessible 模式接口 用于执行默认操作(如双击)

func NewIUIAutomationLegacyIAccessiblePattern

func NewIUIAutomationLegacyIAccessiblePattern(unk *IUnKnown) *IUIAutomationLegacyIAccessiblePattern

NewIUIAutomationLegacyIAccessiblePattern 创建旧版 IAccessible 模式实例 参数: unk - IUnKnown 接口 返回: 旧版 IAccessible 模式实例

func (*IUIAutomationLegacyIAccessiblePattern) DoDefaultAction

func (v *IUIAutomationLegacyIAccessiblePattern) DoDefaultAction() error

DoDefaultAction 执行默认操作(如双击) 返回: 错误信息

func (*IUIAutomationLegacyIAccessiblePattern) Get_CurrentDefaultAction

func (v *IUIAutomationLegacyIAccessiblePattern) Get_CurrentDefaultAction() (string, error)

Get_CurrentDefaultAction 获取默认操作 返回: 默认操作和可能的错误

func (*IUIAutomationLegacyIAccessiblePattern) Release

Release 释放旧版 IAccessible 模式对象 返回: 引用计数

type IUIAutomationLegacyIAccessiblePatternVtbl

type IUIAutomationLegacyIAccessiblePatternVtbl struct {
	IUnKnownVtbl
	Get_CurrentChildId          uintptr // 获取子 ID
	Get_CurrentDefaultAction    uintptr // 获取默认操作
	Get_CurrentDescription      uintptr // 获取描述
	Get_CurrentHelp             uintptr // 获取帮助
	Get_CurrentKeyboardShortcut uintptr // 获取键盘快捷键
	Get_CurrentName             uintptr // 获取名称
	Get_CurrentRole             uintptr // 获取角色
	Get_CurrentState            uintptr // 获取状态
	Get_CurrentValue            uintptr // 获取值
	DoDefaultAction             uintptr // 执行默认操作
	SetCurrentValue             uintptr // 设置当前值
	Get_CurrentParent           uintptr // 获取父元素
	Get_Selection               uintptr // 获取选择
	Get_FocusedElement          uintptr // 获取焦点元素
}

IUIAutomationLegacyIAccessiblePatternVtbl 旧版 IAccessible 模式虚函数表

type IUIAutomationNotCondition

type IUIAutomationNotCondition struct {
	// contains filtered or unexported fields
}

IUIAutomationNotCondition NOT 条件接口 用于对条件取反

func (*IUIAutomationNotCondition) Release

func (v *IUIAutomationNotCondition) Release() uint32

Release 释放 NOT 条件对象 返回: 引用计数

type IUIAutomationNotConditionVtbl

type IUIAutomationNotConditionVtbl struct {
	IUIAutomationConditionVtbl
	GetChild uintptr // 获取子条件
}

IUIAutomationNotConditionVtbl NOT 条件接口虚函数表

type IUIAutomationPropertyCondition

type IUIAutomationPropertyCondition struct {
	// contains filtered or unexported fields
}

IUIAutomationPropertyCondition 属性条件接口 用于根据元素属性值创建搜索条件

func (*IUIAutomationPropertyCondition) Release

Release 释放属性条件对象 返回: 引用计数

type IUIAutomationPropertyConditionVtbl

type IUIAutomationPropertyConditionVtbl struct {
	IUIAutomationConditionVtbl

	Get_PropertyConditionFlags uintptr // 获取条件标志
	Get_PropertyId             uintptr // 获取属性ID
	Get_PropertyValue          uintptr // 获取属性值
}

IUIAutomationPropertyConditionVtbl 属性条件接口虚函数表

type IUIAutomationProxyFactory

type IUIAutomationProxyFactory struct {
	// contains filtered or unexported fields
}

func NewIUIAutomationProxyFactory

func NewIUIAutomationProxyFactory(unk *IUnKnown) *IUIAutomationProxyFactory

func (*IUIAutomationProxyFactory) CreateProvider

func (v *IUIAutomationProxyFactory) CreateProvider(in uintptr, in2, in3 int32) (*IRawElementProviderSimple, error)

func (*IUIAutomationProxyFactory) Get_ProxyFactoryId

func (v *IUIAutomationProxyFactory) Get_ProxyFactoryId() (string, error)

func (*IUIAutomationProxyFactory) Release

func (v *IUIAutomationProxyFactory) Release() uint32

type IUIAutomationProxyFactoryEntry

type IUIAutomationProxyFactoryEntry struct {
	// contains filtered or unexported fields
}

func NewIUIAutomationProxyFactoryEntry

func NewIUIAutomationProxyFactoryEntry(unk *IUnKnown) *IUIAutomationProxyFactoryEntry

func (*IUIAutomationProxyFactoryEntry) GetWinEventsForAutomationEvent

func (v *IUIAutomationProxyFactoryEntry) GetWinEventsForAutomationEvent(in UIA_EventId, in2 PropertyId) (*TagSafeArray, error)

func (*IUIAutomationProxyFactoryEntry) Get_AllowSubstringMatch

func (v *IUIAutomationProxyFactoryEntry) Get_AllowSubstringMatch() int32

func (*IUIAutomationProxyFactoryEntry) Get_CanCheckBaseClass

func (v *IUIAutomationProxyFactoryEntry) Get_CanCheckBaseClass() int32

func (*IUIAutomationProxyFactoryEntry) Get_ClassName

func (v *IUIAutomationProxyFactoryEntry) Get_ClassName() (string, error)

func (*IUIAutomationProxyFactoryEntry) Get_ImageName

func (v *IUIAutomationProxyFactoryEntry) Get_ImageName() (string, error)

func (*IUIAutomationProxyFactoryEntry) Get_NeedsAdviseEvents

func (v *IUIAutomationProxyFactoryEntry) Get_NeedsAdviseEvents() int32

func (*IUIAutomationProxyFactoryEntry) Get_ProxyFactory

func (*IUIAutomationProxyFactoryEntry) Put_AllowSubstringMatch

func (v *IUIAutomationProxyFactoryEntry) Put_AllowSubstringMatch() int32

func (*IUIAutomationProxyFactoryEntry) Put_CanCheckBaseClass

func (v *IUIAutomationProxyFactoryEntry) Put_CanCheckBaseClass() int32

func (*IUIAutomationProxyFactoryEntry) Put_ClassName

func (v *IUIAutomationProxyFactoryEntry) Put_ClassName() string

func (*IUIAutomationProxyFactoryEntry) Put_ImageName

func (v *IUIAutomationProxyFactoryEntry) Put_ImageName() string

func (*IUIAutomationProxyFactoryEntry) Put_NeedsAdviseEvents

func (v *IUIAutomationProxyFactoryEntry) Put_NeedsAdviseEvents() int32

func (*IUIAutomationProxyFactoryEntry) Release

func (*IUIAutomationProxyFactoryEntry) SetWinEventsForAutomationEvent

func (v *IUIAutomationProxyFactoryEntry) SetWinEventsForAutomationEvent(in UIA_EventId, in2 PropertyId, in3 *TagSafeArray) error

type IUIAutomationProxyFactoryEntryVtbl

type IUIAutomationProxyFactoryEntryVtbl struct {
	IUnKnownVtbl
	Get_AllowSubstringMatch        uintptr
	Get_CanCheckBaseClass          uintptr
	Get_ClassName                  uintptr
	Get_ImageName                  uintptr
	Get_NeedsAdviseEvents          uintptr
	Get_ProxyFactory               uintptr
	GetWinEventsForAutomationEvent uintptr
	Put_AllowSubstringMatch        uintptr
	Put_CanCheckBaseClass          uintptr
	Put_ClassName                  uintptr
	Put_ImageName                  uintptr
	Put_NeedsAdviseEvents          uintptr
	SetWinEventsForAutomationEvent uintptr
}

type IUIAutomationProxyFactoryMapping

type IUIAutomationProxyFactoryMapping struct {
	// contains filtered or unexported fields
}

func NewIUIAutomationProxyFactoryMapping

func NewIUIAutomationProxyFactoryMapping(unk *IUnKnown) *IUIAutomationProxyFactoryMapping

func (*IUIAutomationProxyFactoryMapping) ClearTable

func (v *IUIAutomationProxyFactoryMapping) ClearTable() error

func (*IUIAutomationProxyFactoryMapping) GetEntry

func (*IUIAutomationProxyFactoryMapping) GetTable

func (*IUIAutomationProxyFactoryMapping) Get_Count

func (*IUIAutomationProxyFactoryMapping) InsertEntries

func (v *IUIAutomationProxyFactoryMapping) InsertEntries(in uint32, in2 *TagSafeArray) error

func (*IUIAutomationProxyFactoryMapping) InsertEntry

func (*IUIAutomationProxyFactoryMapping) Release

func (*IUIAutomationProxyFactoryMapping) RemoveEntry

func (v *IUIAutomationProxyFactoryMapping) RemoveEntry(in uint32) error

func (*IUIAutomationProxyFactoryMapping) RestoreDefaultTable

func (v *IUIAutomationProxyFactoryMapping) RestoreDefaultTable() error

func (*IUIAutomationProxyFactoryMapping) SetTable

type IUIAutomationProxyFactoryMappingVtbl

type IUIAutomationProxyFactoryMappingVtbl struct {
	IUnKnownVtbl
	ClearTable          uintptr
	Get_Count           uintptr
	GetEntry            uintptr
	GetTable            uintptr
	InsertEntries       uintptr
	InsertEntry         uintptr
	RemoveEntry         uintptr
	RestoreDefaultTable uintptr
	SetTable            uintptr
}

type IUIAutomationProxyFactoryVtbl

type IUIAutomationProxyFactoryVtbl struct {
	IUnKnownVtbl
	CreateProvider     uintptr
	Get_ProxyFactoryId uintptr
}

type IUIAutomationSelectionItemPattern

type IUIAutomationSelectionItemPattern struct {
	// contains filtered or unexported fields
}

IUIAutomationSelectionItemPattern 选择项模式接口 用于选择列表项等控件

func NewIUIAutomationSelectionItemPattern

func NewIUIAutomationSelectionItemPattern(unk *IUnKnown) *IUIAutomationSelectionItemPattern

NewIUIAutomationSelectionItemPattern 创建选择项模式实例 参数: unk - IUnKnown 接口 返回: 选择项模式实例

func (*IUIAutomationSelectionItemPattern) Release

Release 释放选择项模式对象 返回: 引用计数

func (*IUIAutomationSelectionItemPattern) Select

Select 选择该项 返回: 错误信息

type IUIAutomationSelectionItemPatternVtbl

type IUIAutomationSelectionItemPatternVtbl struct {
	IUnKnownVtbl
	Select                        uintptr // 选择项
	AddToSelection                uintptr // 添加到选择
	RemoveFromSelection           uintptr // 从选择移除
	Get_CurrentIsSelected         uintptr // 获取是否已选中
	Get_CurrentSelectionContainer uintptr // 获取选择容器
	Get_CachedIsSelected          uintptr // 获取缓存是否已选中
	Get_CachedSelectionContainer  uintptr // 获取缓存选择容器
}

IUIAutomationSelectionItemPatternVtbl 选择项模式虚函数表

type IUIAutomationStructureChangedEventHandler

type IUIAutomationStructureChangedEventHandler struct {
	// contains filtered or unexported fields
}

func NewIUIAutomationStructureChangedEventHandler

func NewIUIAutomationStructureChangedEventHandler(unk *IUnKnown) *IUIAutomationStructureChangedEventHandler

func (*IUIAutomationStructureChangedEventHandler) HandleStructureChangedEvent

func (*IUIAutomationStructureChangedEventHandler) Release

type IUIAutomationStructureChangedEventHandlerVtbl

type IUIAutomationStructureChangedEventHandlerVtbl struct {
	IUnKnownVtbl
	HandleStructureChangedEvent uintptr
}

type IUIAutomationTogglePattern

type IUIAutomationTogglePattern struct {
	// contains filtered or unexported fields
}

IUIAutomationTogglePattern 切换模式接口 用于切换复选框等控件的状态

func NewIUIAutomationTogglePattern

func NewIUIAutomationTogglePattern(unk *IUnKnown) *IUIAutomationTogglePattern

NewIUIAutomationTogglePattern 创建切换模式实例 参数: unk - IUnKnown 接口 返回: 切换模式实例

func (*IUIAutomationTogglePattern) Get_CurrentToggleState

func (v *IUIAutomationTogglePattern) Get_CurrentToggleState() (ToggleState, error)

Get_CurrentToggleState 获取当前切换状态 返回: 切换状态和可能的错误

func (*IUIAutomationTogglePattern) Release

func (v *IUIAutomationTogglePattern) Release() uint32

Release 释放切换模式对象 返回: 引用计数

func (*IUIAutomationTogglePattern) Toggle

func (v *IUIAutomationTogglePattern) Toggle() error

Toggle 切换控件状态 返回: 错误信息

type IUIAutomationTogglePatternVtbl

type IUIAutomationTogglePatternVtbl struct {
	IUnKnownVtbl
	Toggle                 uintptr // 切换状态
	Get_CurrentToggleState uintptr // 获取当前切换状态
	Get_CachedToggleState  uintptr // 获取缓存切换状态
}

IUIAutomationTogglePatternVtbl 切换模式虚函数表

type IUIAutomationTreeWalker

type IUIAutomationTreeWalker struct {
	// contains filtered or unexported fields
}

func (*IUIAutomationTreeWalker) GetFirstChildElement

func (v *IUIAutomationTreeWalker) GetFirstChildElement(element *IUIAutomationElement) (*IUIAutomationElement, error)

func (*IUIAutomationTreeWalker) GetNextSiblingElement

func (v *IUIAutomationTreeWalker) GetNextSiblingElement(element *IUIAutomationElement) (*IUIAutomationElement, error)

func (*IUIAutomationTreeWalker) GetParentElement

func (v *IUIAutomationTreeWalker) GetParentElement(element *IUIAutomationElement) (*IUIAutomationElement, error)

func (*IUIAutomationTreeWalker) Release

func (v *IUIAutomationTreeWalker) Release() uint32

type IUIAutomationTreeWalkerVtbl

type IUIAutomationTreeWalkerVtbl struct {
	IUnKnownVtbl

	Get_Condition                       uintptr
	GetFirstChildElement                uintptr
	GetFirstChildElementBuildCache      uintptr
	GetLastChildElement                 uintptr
	GetLastChildElementBuildCache       uintptr
	GetNextSiblingElement               uintptr
	GetNextSiblingElementBuildCache     uintptr
	GetParentElement                    uintptr
	GetParentElementBuildCache          uintptr
	GetPreviousSiblingElement           uintptr
	GetPreviousSiblingElementBuildCache uintptr
	NormalizeElement                    uintptr
	NormalizeElementBuildCache          uintptr
}

type IUIAutomationValuePattern

type IUIAutomationValuePattern struct {
	// contains filtered or unexported fields
}

IUIAutomationValuePattern 值模式接口 用于设置或获取文本输入控件的值

func NewIUIAutomationValuePattern

func NewIUIAutomationValuePattern(unk *IUnKnown) *IUIAutomationValuePattern

NewIUIAutomationValuePattern 创建值模式实例 参数: unk - IUnKnown 接口 返回: 值模式实例

func (*IUIAutomationValuePattern) Get_CurrentValue

func (v *IUIAutomationValuePattern) Get_CurrentValue() (string, error)

Get_CurrentValue 获取控件的当前值 返回: 当前值和可能的错误

func (*IUIAutomationValuePattern) Release

func (v *IUIAutomationValuePattern) Release() uint32

Release 释放值模式对象 返回: 引用计数

func (*IUIAutomationValuePattern) SetValue

func (v *IUIAutomationValuePattern) SetValue(val string) error

SetValue 设置控件的值 参数: val - 要设置的值 返回: 错误信息

type IUIAutomationValuePatternVtbl

type IUIAutomationValuePatternVtbl struct {
	IUnKnownVtbl
	SetValue              uintptr // 设置值
	Get_CurrentValue      uintptr // 获取当前值
	Get_CurrentIsReadOnly uintptr // 获取是否只读
	Get_CachedValue       uintptr // 获取缓存值
	Get_CachedIsReadOnly  uintptr // 获取缓存是否只读
}

IUIAutomationValuePatternVtbl 值模式虚函数表

type IUIAutomationVtbl

type IUIAutomationVtbl struct {
	IUnKnownVtbl

	CompareElements                           uintptr // 比较两个元素是否相同
	CompareRuntimeIds                         uintptr // 比较两个运行时ID
	GetRootElement                            uintptr // 获取桌面根元素
	ElementFromHandle                         uintptr // 从窗口句柄获取元素
	ElementFromPoint                          uintptr // 从屏幕坐标获取元素
	GetFocusedElement                         uintptr // 获取当前焦点元素
	GetRootElementBuildCache                  uintptr // 获取根元素(带缓存)
	ElementFromHandleBuildCache               uintptr // 从句柄获取元素(带缓存)
	ElementFromPointBuildCache                uintptr // 从坐标获取元素(带缓存)
	GetFocusedElementBuildCache               uintptr // 获取焦点元素(带缓存)
	CreateTreeWalker                          uintptr // 创建树遍历器
	Get_ControlViewWalker                     uintptr // 获取控件视图遍历器
	Get_ContentViewWalker                     uintptr // 获取内容视图遍历器
	Get_RawViewWalker                         uintptr // 获取原始视图遍历器
	Get_RawViewCondition                      uintptr // 获取原始视图条件
	Get_ControlViewCondition                  uintptr // 获取控件视图条件
	Get_ContentViewCondition                  uintptr // 获取内容视图条件
	CreateCacheRequest                        uintptr // 创建缓存请求
	CreateTrueCondition                       uintptr // 创建 True 条件
	CreateFalseCondition                      uintptr // 创建 False 条件
	CreatePropertyCondition                   uintptr // 创建属性条件
	CreatePropertyConditionEx                 uintptr // 创建扩展属性条件
	CreateAndCondition                        uintptr // 创建 AND 条件
	CreateAndConditionFromArray               uintptr // 从数组创建 AND 条件
	CreateAndConditionFromNativeArray         uintptr // 从原生数组创建 AND 条件
	CreateOrCondition                         uintptr // 创建 OR 条件
	CreateOrConditionFromArray                uintptr // 从数组创建 OR 条件
	CreateOrConditionFromNativeArray          uintptr // 从原生数组创建 OR 条件
	CreateNotCondition                        uintptr // 创建 NOT 条件
	AddAutomationEventHandler                 uintptr // 添加自动化事件处理器
	RemoveAutomationEventHandler              uintptr // 移除自动化事件处理器
	AddPropertyChangedEventHandlerNativeArray uintptr // 添加属性变更事件处理器(原生数组)
	AddPropertyChangedEventHandler            uintptr // 添加属性变更事件处理器
	RemovePropertyChangedEventHandler         uintptr // 移除属性变更事件处理器
	AddStructureChangedEventHandler           uintptr // 添加结构变更事件处理器
	RemoveStructureChangedEventHandler        uintptr // 移除结构变更事件处理器
	AddFocusChangedEventHandler               uintptr // 添加焦点变更事件处理器
	RemoveFocusChangedEventHandler            uintptr // 移除焦点变更事件处理器
	RemoveAllEventHandlers                    uintptr // 移除所有事件处理器
	IntNativeArrayToSafeArray                 uintptr // 整数原生数组转 SAFEARRAY
	IntSafeArrayToNativeArray                 uintptr // SAFEARRAY 转整数原生数组
	RectToVariant                             uintptr // 矩形转 VARIANT
	VariantToRect                             uintptr // VARIANT 转矩形
	SafeArrayToRectNativeArray                uintptr // SAFEARRAY 转矩形数组
	CreateProxyFactoryEntry                   uintptr // 创建代理工厂条目
	Get_ProxyFactoryMapping                   uintptr // 获取代理工厂映射
	GetPropertyProgrammaticName               uintptr // 获取属性程序名称
	GetPatternProgrammaticName                uintptr // 获取模式程序名称
	PollForPotentialSupportedPatterns         uintptr // 轮询潜在支持的模式
	PollForPotentialSupportedProperties       uintptr // 轮询潜在支持的属性
	CheckNotSupported                         uintptr // 检查是否不支持
	Get_ReservedNotSupportedValue             uintptr // 获取保留的不支持值
	Get_ReservedMixedAttributeValue           uintptr // 获取保留的混合属性值
	ElementFromIAccessible                    uintptr // 从 IAccessible 获取元素
	ElementFromIAccessibleBuildCache          uintptr // 从 IAccessible 获取元素(带缓存)
}

IUIAutomationVtbl UI Automation 接口虚函数表

type IUnKnown

type IUnKnown struct {
	Vtbl *IUnKnownVtbl
}

IUnKnown COM IUnknown 接口 所有 COM 接口的基类,提供引用计数和接口查询功能

func NewIUnKnown

func NewIUnKnown(v unsafe.Pointer) *IUnKnown

NewIUnKnown 从指针创建 IUnKnown 实例 参数: v - COM 对象指针 返回: IUnKnown 实例

func (*IUnKnown) AddRef

func (v *IUnKnown) AddRef() uint32

AddRef 增加对象引用计数 返回: 新的引用计数

func (*IUnKnown) Release

func (v *IUnKnown) Release() uint32

Release 释放对象引用计数 当引用计数为 0 时,对象会被销毁 返回: 新的引用计数

type IUnKnownVtbl

type IUnKnownVtbl struct {
	QueryInterface uintptr // 查询接口
	AddRef         uintptr // 增加引用计数
	Release        uintptr // 释放引用计数
}

IUnKnownVtbl IUnknown 接口虚函数表

type OrientationType

type OrientationType int32

OrientationType 方向类型

const (
	OrientationType_None       OrientationType = iota // 无方向
	OrientationType_Horizontal                        // 水平
	OrientationType_Vertical                          // 垂直
)

方向类型常量

type ParamFlag

type ParamFlag uint16

ParamFlag 参数标志

const (
	PARAMFLAG_NONE         ParamFlag = 0    // 无标志
	PARAMFLAG_FIN          ParamFlag = 0x1  // 输入参数
	PARAMFLAG_FOUT         ParamFlag = 0x2  // 输出参数
	PARAMFLAG_FLCID        ParamFlag = 0x4  // LCID 参数
	PARAMFLAG_FRETVAL      ParamFlag = 0x8  // 返回值参数
	PARAMFLAG_FOPT         ParamFlag = 0x10 // 可选参数
	PARAMFLAG_FHASDEFAULT  ParamFlag = 0x20 // 有默认值
	PARAMFLAG_FHASCUSTDATA ParamFlag = 0x40 // 有自定义数据
)

参数标志常量 参考: https://learn.microsoft.com/zh-cn/previous-versions/windows/desktop/automat/paramflags

type PatternId

type PatternId int32

PatternId UI Automation 模式标识符类型 用于标识 UI 元素支持的各种操作模式,如点击、设置值、展开折叠等

const (
	UIA_AnnotationPatternId        PatternId = 10023 // 注解模式
	UIA_CustomNavigationPatternId  PatternId = 10033 // 自定义导航模式
	UIA_DockPatternId              PatternId = 10011 // 停靠模式
	UIA_DragPatternId              PatternId = 10030 // 拖拽模式
	UIA_DropTargetPatternId        PatternId = 10031 // 放置目标模式
	UIA_ExpandCollapsePatternId    PatternId = 10005 // 展开/折叠模式
	UIA_GridItemPatternId          PatternId = 10007 // 网格项模式
	UIA_GridPatternId              PatternId = 10006 // 网格模式
	UIA_InvokePatternId            PatternId = 10000 // 调用模式(按钮点击)
	UIA_ItemContainerPatternId     PatternId = 10019 // 项目容器模式
	UIA_LegacyIAccessiblePatternId PatternId = 10018 // 旧版 IAccessible 模式
	UIA_MultipleViewPatternId      PatternId = 10008 // 多视图模式
	UIA_ObjectModelPatternId       PatternId = 10022 // 对象模型模式
	UIA_RangeValuePatternId        PatternId = 10003 // 范围值模式(滑块)
	UIA_ScrollItemPatternId        PatternId = 10017 // 滚动项模式
	UIA_ScrollPatternId            PatternId = 10004 // 滚动模式
	UIA_SelectionItemPatternId     PatternId = 10010 // 选择项模式
	UIA_SelectionPatternId         PatternId = 10001 // 选择模式
	UIA_SpreadsheetPatternId       PatternId = 10026 // 电子表格模式
	UIA_SpreadsheetItemPatternId   PatternId = 10027 // 电子表格项模式
	UIA_StylesPatternId            PatternId = 10025 // 样式模式
	UIA_SynchronizedInputPatternId PatternId = 10021 // 同步输入模式
	UIA_TableItemPatternId         PatternId = 10013 // 表格项模式
	UIA_TablePatternId             PatternId = 10012 // 表格模式
	UIA_TextChildPatternId         PatternId = 10029 // 文本子项模式
	UIA_TextEditPatternId          PatternId = 10032 // 文本编辑模式
	UIA_TextPatternId              PatternId = 10014 // 文本模式
	UIA_TextPattern2Id             PatternId = 10024 // 文本模式2
	UIA_TogglePatternId            PatternId = 10015 // 切换模式(复选框)
	UIA_TransformPatternId         PatternId = 10016 // 变换模式(移动、调整大小、旋转)
	UIA_TransformPattern2Id        PatternId = 10028 // 变换模式2
	UIA_ValuePatternId             PatternId = 10002 // 值模式(文本输入)
	UIA_VirtualizedItemPatternId   PatternId = 10020 // 虚拟化项模式
	UIA_WindowPatternId            PatternId = 10009 // 窗口模式
)

UI Automation 模式常量定义 参考: https://learn.microsoft.com/zh-cn/windows/win32/winauto/uiauto-controlpattern-ids

type PropertyConditionFlags

type PropertyConditionFlags int32

PropertyConditionFlags 属性条件标志

const (
	PropertyConditionFlags_None           PropertyConditionFlags = 0   // 无标志
	PropertyConditionFlags_IgnoreCase     PropertyConditionFlags = 0x1 // 忽略大小写
	PropertyConditionFlags_MatchSubstring PropertyConditionFlags = 0x2 // 匹配子字符串
)

属性条件标志常量

func Get_PropertyConditionFlags

func Get_PropertyConditionFlags(v *IUIAutomationPropertyCondition) *PropertyConditionFlags

Get_PropertyConditionFlags 获取属性条件的标志 参数: v - 属性条件接口 返回: 条件标志指针

type PropertyId

type PropertyId int32

PropertyId UI Automation 属性标识符类型 用于标识 UI 元素的各种属性,如名称、类名、控件类型等

const (
	UIA_AcceleratorKeyPropertyId           PropertyId = 30006  // 快捷键属性
	UIA_AccessKeyPropertyId                PropertyId = 30007  // 访问键属性(如 Alt+F)
	UIA_AnnotationObjectsPropertyId        PropertyId = 30156  // 注解对象属性
	UIA_AnnotationTypesPropertyId          PropertyId = 30155  // 注解类型属性
	UIA_AriaPropertiesPropertyId           PropertyId = 30102  // ARIA 属性
	UIA_AriaRolePropertyId                 PropertyId = 30101  // ARIA 角色属性
	UIA_AutomationIdPropertyId             PropertyId = 30011  // 自动化ID属性(唯一标识符)
	UIA_BoundingRectanglePropertyId        PropertyId = 30001  // 边界矩形属性(元素位置和大小)
	UIA_CenterPointPropertyId              PropertyId = 30165  // 中心点属性
	UIA_ClassNamePropertyId                PropertyId = 30012  // 类名属性
	UIA_ClickablePointPropertyId           PropertyId = 30014  // 可点击点属性
	UIA_ControllerForPropertyId            PropertyId = 30104  // 控制器属性
	UIA_ControlTypePropertyId              PropertyId = 30003  // 控件类型属性
	UIA_CulturePropertyId                  PropertyId = 30015  // 文化/区域属性
	UIA_DescribedByPropertyId              PropertyId = 30105  // 描述属性
	UIA_FillColorPropertyId                PropertyId = 30160  // 填充颜色属性
	UIA_FillTypePropertyId                 PropertyId = 30162  // 填充类型属性
	UIA_FlowsFromPropertyId                PropertyId = 30148  // 流向来源属性
	UIA_FlowsToPropertyId                  PropertyId = 30106  // 流向目标属性
	UIA_FrameworkIdPropertyId              PropertyId = 30024  // 框架ID属性(如 WPF, Win32)
	UIA_FullDescriptionPropertyId          PropertyId = 30159  // 完整描述属性
	UIA_HasKeyboardFocusPropertyId         PropertyId = 30008  // 是否有键盘焦点属性
	UIA_HeadingLevelPropertyId             PropertyId = 30173  // 标题级别属性
	UIA_HelpTextPropertyId                 PropertyId = 30013  // 帮助文本属性
	UIA_IsContentElementPropertyId         PropertyId = 30017  // 是否为内容元素属性
	UIA_IsControlElementPropertyId         PropertyId = 30016  // 是否为控件元素属性
	UIA_IsDataValidForFormPropertyId       PropertyId = 30103  // 表单数据是否有效属性
	UIA_IsDialogPropertyId                 PropertyId = 30174  // 是否为对话框属性
	UIA_IsEnabledPropertyId                PropertyId = 30010  // 是否启用属性
	UIA_IsKeyboardFocusablePropertyId      PropertyId = 30009  // 是否可获取键盘焦点属性
	UIA_IsOffscreenPropertyId              PropertyId = 30022  // 是否在屏幕外属性
	UIA_IsPasswordPropertyId               PropertyId = 30019  // 是否为密码字段属性
	UIA_IsPeripheralPropertyId             PropertyId = 30150  // 是否为外围设备属性
	UIA_IsRequiredForFormPropertyId        PropertyId = 30025  // 表单是否必填属性
	UIA_ItemStatusPropertyId               PropertyId = 30026  // 项目状态属性
	UIA_ItemTypePropertyId                 PropertyId = 300021 // 项目类型属性
	UIA_LabeledByPropertyId                PropertyId = 30018  // 标签来源属性
	UIA_LandmarkTypePropertyId             PropertyId = 30157  // 地标类型属性
	UIA_LevelPropertyId                    PropertyId = 30154  // 层级属性
	UIA_LiveSettingPropertyId              PropertyId = 30135  // 实时设置属性
	UIA_LocalizedControlTypePropertyId     PropertyId = 30004  // 本地化控件类型属性
	UIA_LocalizedLandmarkTypePropertyId    PropertyId = 30158  // 本地化地标类型属性
	UIA_NamePropertyId                     PropertyId = 30005  // 名称属性
	UIA_NativeWindowHandlePropertyId       PropertyId = 30020  // 原生窗口句柄属性
	UIA_OptimizeForVisualContentPropertyId PropertyId = 30111  // 视觉内容优化属性
	UIA_OrientationPropertyId              PropertyId = 300023 // 方向属性
	UIA_OutlineColorPropertyId             PropertyId = 30161  // 轮廓颜色属性
	UIA_OutlineThicknessPropertyId         PropertyId = 30164  // 轮廓厚度属性
	UIA_PositionInSetPropertyId            PropertyId = 30152  // 集合中位置属性
	UIA_ProcessIdPropertyId                PropertyId = 30002  // 进程ID属性
	UIA_ProviderDescriptionPropertyId      PropertyId = 30107  // 提供者描述属性
	UIA_RotationPropertyId                 PropertyId = 30166  // 旋转属性
	UIA_RuntimeIdPropertyId                PropertyId = 30000  // 运行时ID属性
	UIA_SizePropertyId                     PropertyId = 30167  // 尺寸属性
	UIA_SizeOfSetPropertyId                PropertyId = 30153  // 集合大小属性
	UIA_VisualEffectsPropertyId            PropertyId = 30163  // 视觉效果属性
)

UI Automation 属性常量定义 参考: https://learn.microsoft.com/zh-cn/windows/win32/winauto/uiauto-entry-propids

func Get_PropertyId

func Get_PropertyId(v *IUIAutomationPropertyCondition) *PropertyId

Get_PropertyId 获取属性条件的属性ID 参数: v - 属性条件接口 返回: 属性ID指针

type RowOrColumnMajor

type RowOrColumnMajor int32

RowOrColumnMajor 行或列主导

const (
	RowOrColumnMajor_RowMajor      RowOrColumnMajor = iota // 行主导
	RowOrColumnMajor_ColumnMajor                           // 列主导
	RowOrColumnMajor_Indeterminate                         // 不确定
)

行或列主导常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-roworcolumnmajor

type ScrollAmount

type ScrollAmount int32

ScrollAmount 滚动量

const (
	ScrollAmount_LargeDecrement ScrollAmount = iota // 大幅度后退
	ScrollAmount_SmallDecrement                     // 小幅度后退
	ScrollAmount_NoAmount                           // 无滚动
	ScrollAmount_LargeIncrement                     // 大幅度前进
	ScrollAmount_SmallIncrement                     // 小幅度前进
)

滚动量常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-scrollamount

type SearchFunc

type SearchFunc func(elem *Element) bool

SearchFunc 元素搜索函数类型 参数: 要检查的元素 返回: 是否匹配

type SelFlag

type SelFlag int32

SelFlag 选择标志

var (
	SELFLAG_NONE            SelFlag = 0    // 无标志
	SELFLAG_TAKEFOCUS       SelFlag = 0x1  // 获取焦点
	SELFLAG_TAKESELECTION   SelFlag = 0x2  // 获取选择
	SELFLAG_EXTENDSELECTION SelFlag = 0x4  // 扩展选择
	SELFLAG_ADDSELECTION    SelFlag = 0x8  // 添加到选择
	SELFLAG_REMOVESELECTION SelFlag = 0x10 // 从选择移除
)

选择标志常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/winauto/selflag

type StructureChangeType

type StructureChangeType int32

StructureChangeType 结构变更类型

const (
	StructureChangeType_ChildAdded          StructureChangeType = iota // 子元素已添加
	StructureChangeType_ChildRemoved                                   // 子元素已移除
	StructureChangeType_ChildrenInvalidated                            // 子元素已失效
	StructureChangeType_ChildrenBulkAdded                              // 批量添加子元素
	StructureChangeType_ChildrenBulkRemoved                            // 批量移除子元素
	StructureChangeType_ChildrenReordered                              // 子元素已重新排序
)

结构变更类型常量

type StructureChangedEventHandler

type StructureChangedEventHandler struct {
	Element      *IUIAutomationElement      // 目标元素
	Scope        TreeScope                  // 搜索范围
	CacheRequest *IUIAutomationCacheRequest // 缓存请求
	Handler      *IUnKnown                  // 事件处理器(原为 IUIAutomationPropertyChangedEventHandler)
}

StructureChangedEventHandler 结构变更事件处理器配置 注意: IUIAutomationPropertyChangedEventHandler 类型未定义,暂时使用 IUnKnown

type SupportedTextSelection

type SupportedTextSelection int32

SupportedTextSelection 支持的文本选择类型

const (
	SupportedTextSelection_None     SupportedTextSelection = iota // 不支持选择
	SupportedTextSelection_Single                                 // 单选
	SupportedTextSelection_Multiple                               // 多选
)

支持的文本选择类型常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-supportedtextselection

type SynchronizedInputType

type SynchronizedInputType int32

SynchronizedInputType 同步输入类型

const (
	SynchronizedInputType_KeyUp          SynchronizedInputType = 0x1  // 键盘释放
	SynchronizedInputType_KeyDown        SynchronizedInputType = 0x2  // 键盘按下
	SynchronizedInputType_LeftMouseUp    SynchronizedInputType = 0x4  // 左键释放
	SynchronizedInputType_LeftMouseDown  SynchronizedInputType = 0x8  // 左键按下
	SynchronizedInputType_RightMouseUp   SynchronizedInputType = 0x10 // 右键释放
	SynchronizedInputType_RightMouseDown SynchronizedInputType = 0x20 // 右键按下
)

同步输入类型常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-synchronizedinputtype

type TYPEDESC

type TYPEDESC struct {
}

TYPEDESC 类型描述(未完成)

type TagCallConv

type TagCallConv int32

TagCallConv 调用约定

const (
	CC_FASTCALL   TagCallConv = iota // 快速调用
	CC_CDECL                         // C 声明
	CC_MSCPASCAL                     // MSC Pascal
	CC_PASCAL                        // Pascal
	CC_MACPASCAL                     // Mac Pascal
	CC_STDCALL                       // 标准调用
	CC_FPFASTCALL                    // FP 快速调用
	CC_SYSCALL                       // 系统调用
	CC_MPWCDECL                      // MPW C 声明
	CC_MPWPASCAL                     // MPW Pascal
	CC_MAX                           // 最大值
)

调用约定常量

type TagDispParams

type TagDispParams struct {
	Rgvarg            uintptr // 指向 VARIANT 数组
	RgdispidNamedArgs uintptr // 指向 DISPID 数组
	Cargs             uint32  // 参数数量
	CNamedArgs        uint32  // 命名参数数量
}

TagDispParams DISPPARAMS 结构 用于 IDispatch::Invoke 方法的参数传递

type TagDvAspect

type TagDvAspect int32

TagDvAspect DVASPECT 枚举

const (
	DVASPECT_CONTENT   TagDvAspect = 1 // 内容视图
	DVASPECT_THUMBNAIL TagDvAspect = 2 // 缩略图视图
	DVASPECT_ICON      TagDvAspect = 4 // 图标视图
	DVASPECT_DOCPRINT  TagDvAspect = 8 // 文档打印视图
)

DVASPECT 常量

type TagDvTargetDevice

type TagDvTargetDevice struct {
	TdSize             uint32  // 结构大小
	TdDriverNameOffset uint16  // 驱动名称偏移
	TdDeviceNameOffset uint16  // 设备名称偏移
	TdPortNameOffset   uint16  // 端口名称偏移
	TdExtDevmodeOffset uint16  // 扩展设备模式偏移
	TdData             [1]byte // 数据
}

TagDvTargetDevice 目标设备描述

type TagElemDesc

type TagElemDesc struct {
	Tdesc     TagTypeDesc  // 类型描述
	Paramdesc TagParamDesc // 参数描述
}

TagElemDesc 元素描述

type TagExcepInfo

type TagExcepInfo struct {
	WCode             uint16  // 错误代码
	WReserved         uint16  // 保留
	BstrSource        uintptr // 错误源
	BstrDescription   uintptr // 错误描述
	BstrHelpFile      uintptr // 帮助文件
	DwHelpContext     uint32  // 帮助上下文
	PvReserved        uintptr // 保留
	PFnDeferredFillIn uintptr // 延迟填充函数
	Scode             int32   // SCODE
}

TagExcepInfo EXCEPINFO 结构 用于存储异常信息

type TagFuncDesc

type TagFuncDesc struct {
	Memid             int32       // MEMBERID
	LPrgsCode         uintptr     // SCODE*
	LPrgelemdescParam uintptr     // ELEMDESC*
	Funckind          int32       // FUNCKIND
	Invkind           int32       // INVOKEKIND
	Callconv          int32       // CALLCONV
	CParams           int16       // 参数数量
	CParamsOpt        int16       // 可选参数数量
	OVft              int16       // 偏移
	CScodes           int16       // SCODE 数量
	ElemdescFunc      TagElemDesc // 函数元素描述
	WFuncFlags        uint16      // 函数标志
}

TagFuncDesc 函数描述

type TagFuncKind

type TagFuncKind int32

TagFuncKind 函数类型

const (
	FUNC_VIRTUAL     TagFuncKind = iota // 虚函数
	FUNC_PUREVIRTUAL                    // 纯虚函数
	FUNC_NONVIRTUAL                     // 非虚函数
	FUNC_STATIC                         // 静态函数
	FUNC_DISPATCH                       // 分发函数
)

函数类型常量

type TagIdlDesc

type TagIdlDesc struct {
	DwReserved uintptr // ULONG_PTR
	WIdlFlags  uint16  // IDL 标志
}

TagIdlDesc IDL 描述

type TagInvokeKind

type TagInvokeKind int32

TagInvokeKind 调用类型

const (
	INVOKE_FUNC           TagInvokeKind = 1 // 函数调用
	INVOKE_PROPERTYGET    TagInvokeKind = 2 // 属性获取
	INVOKE_PROPERTYPUT    TagInvokeKind = 4 // 属性设置
	INVOKE_PROPERTYPUTREF TagInvokeKind = 8 // 属性引用设置
)

调用类型常量

type TagParamDesc

type TagParamDesc struct {
	Pparamdescex uintptr // LPPARAMDESCEX
	WParamFlags  uint16  // PARAMFLAGS
}

TagParamDesc 参数描述

type TagPoint

type TagPoint struct {
	X int32 // X 坐标
	Y int32 // Y 坐标
}

TagPoint 表示一个点的坐标(整数)

type TagRect

type TagRect struct {
	Left   int32 // 左边界
	Top    int32 // 上边界
	Right  int32 // 右边界
	Bottom int32 // 下边界
}

TagRect 表示一个矩形区域

type TagSafeArray

type TagSafeArray struct {
	CDims     uint16               // 维度数量
	FFeatures uint16               // 特征标志
	CbElement uint32               // 元素大小(字节)
	CLocks    uint32               // 锁定计数
	PvData    uintptr              // 数据指针
	Rgsabound [1]TagSafeArrayBound // 边界数组(COM 中通常是尾随数组)
}

TagSafeArray SAFEARRAY 结构 用于 COM 中的数组传递 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/oaidl/ns-oaidl-safearray

func GetChildren

func GetChildren(v *IUIAutomationAndCondition) (*TagSafeArray, error)

GetChildren 获取 AND 条件中的子条件数组(SAFEARRAY 格式) 参数: v - AND 条件接口 返回: SAFEARRAY 指针和可能的错误

type TagSafeArrayBound

type TagSafeArrayBound struct {
	CElements uint32 // 元素数量
	LLbound   int32  // 下界
}

TagSafeArrayBound SAFEARRAY 边界描述 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/oaidl/ns-oaidl-safearraybound

type TagSize

type TagSize struct {
	Cx int32 // 宽度
	Cy int32 // 高度
}

TagSize 表示尺寸(宽度和高度)

type TagTypeDesc

type TagTypeDesc struct {
}

TagTypeDesc 类型描述

type TagVarenum

type TagVarenum uint16

TagVarenum VARIANT 类型枚举 定义了 COM VARIANT 结构支持的数据类型

const (
	VT_EMPTY            TagVarenum = 0      // 空类型
	VT_NULL             TagVarenum = 1      // NULL 值
	VT_I2               TagVarenum = 2      // 16位有符号整数
	VT_I4               TagVarenum = 3      // 32位有符号整数
	VT_R4               TagVarenum = 4      // 32位浮点数
	VT_R8               TagVarenum = 5      // 64位浮点数
	VT_CY               TagVarenum = 6      // 货币类型
	VT_DATE             TagVarenum = 7      // 日期类型
	VT_BSTR             TagVarenum = 8      // BSTR 字符串
	VT_DISPATCH         TagVarenum = 9      // IDispatch 接口
	VT_ERROR            TagVarenum = 10     // SCODE 错误码
	VT_BOOL             TagVarenum = 11     // 布尔值
	VT_VARIANT          TagVarenum = 12     // VARIANT 类型
	VT_UNKNOWN          TagVarenum = 13     // IUnknown 接口
	VT_DECIMAL          TagVarenum = 14     // 十进制类型
	VT_I1               TagVarenum = 16     // 8位有符号整数
	VT_UI1              TagVarenum = 17     // 8位无符号整数
	VT_UI2              TagVarenum = 18     // 16位无符号整数
	VT_UI4              TagVarenum = 19     // 32位无符号整数
	VT_I8               TagVarenum = 20     // 64位有符号整数
	VT_UI8              TagVarenum = 21     // 64位无符号整数
	VT_INT              TagVarenum = 22     // 有符号整数(平台相关)
	VT_UINT             TagVarenum = 23     // 无符号整数(平台相关)
	VT_VOID             TagVarenum = 24     // void 类型
	VT_HRESULT          TagVarenum = 25     // HRESULT 类型
	VT_PTR              TagVarenum = 26     // 指针类型
	VT_SAFEARRAY        TagVarenum = 27     // SAFEARRAY 类型
	VT_CARRAY           TagVarenum = 28     // C 风格数组
	VT_USERDEFINED      TagVarenum = 29     // 用户定义类型
	VT_LPSTR            TagVarenum = 30     // 以 null 结尾的字符串
	VT_LPWSTR           TagVarenum = 31     // 以 null 结尾的宽字符串
	VT_RECORD           TagVarenum = 36     // 记录类型
	VT_INT_PTR          TagVarenum = 37     // 整数指针
	VT_UINT_PTR         TagVarenum = 38     // 无符号整数指针
	VT_FILETIME         TagVarenum = 64     // FILETIME 类型
	VT_BLOB             TagVarenum = 65     // BLOB 类型
	VT_STREAM           TagVarenum = 66     // IStream 接口
	VT_STORAGE          TagVarenum = 67     // IStorage 接口
	VT_STREAMED_OBJECT  TagVarenum = 68     // 流式对象
	VT_STORED_OBJECT    TagVarenum = 69     // 存储对象
	VT_BLOB_OBJECT      TagVarenum = 70     // BLOB 对象
	VT_CF               TagVarenum = 71     // 剪贴板格式
	VT_CLSID            TagVarenum = 72     // CLSID 类型
	VT_VERSIONED_STREAM TagVarenum = 73     // 版本化流
	VT_BSTR_BLOB        TagVarenum = 0xfff  // BSTR BLOB 类型
	VT_VECTOR           TagVarenum = 0x1000 // 向量标志
	VT_ARRAY            TagVarenum = 0x2000 // 数组标志
	VT_BYREF            TagVarenum = 0x4000 // 引用标志
	VT_RESERVED         TagVarenum = 0x8000 // 保留标志
	VT_ILLEGAL          TagVarenum = 0xffff // 非法类型
	VT_ILLEGALMASKED    TagVarenum = 0xfff  // 非法类型掩码
	VT_TYPEMASK         TagVarenum = 0xfff  // 类型掩码
)

VARIANT 类型常量定义 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/wtypes/ne-wtypes-varenum

type TextArrtibuteId

type TextArrtibuteId int32

TextArrtibuteId 文本属性ID

type TextPatternRangeEndpoint

type TextPatternRangeEndpoint int32

TextPatternRangeEndpoint 文本范围端点

const (
	TextPatternRangeEndpoint_Start TextPatternRangeEndpoint = iota // 起点
	TextPatternRangeEndpoint_End                                   // 终点
)

文本范围端点常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-textpatternrangeendpoint

type TextUnit

type TextUnit int32

TextUnit 文本单位

const (
	TextUnit_Character TextUnit = iota // 字符
	TextUnit_Format                    // 格式
	TextUnit_Word                      // 单词
	TextUnit_Line                      // 行
	TextUnit_Paragraph                 // 段落
	TextUnit_Page                      // 页
	TextUnit_Document                  // 文档
)

文本单位常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-textunit

type ToggleState

type ToggleState int32

ToggleState 切换状态

const (
	ToggleState_Off           ToggleState = iota // 关闭
	ToggleState_On                               // 打开
	ToggleState_Indeterminate                    // 不确定(三态复选框)
)

切换状态常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-togglestate

type TreeScope

type TreeScope int32

TreeScope 树搜索范围类型

var (
	TreeScope_None        TreeScope = 0x0                                                            // 无范围
	TreeScope_Element     TreeScope = 0x1                                                            // 元素本身
	TreeScope_Children    TreeScope = 0x2                                                            // 直接子元素
	TreeScope_Descendants TreeScope = 0x4                                                            // 所有后代元素
	TreeScope_Parent      TreeScope = 0x8                                                            // 父元素
	TreeScope_Ancestors   TreeScope = 0x10                                                           // 所有祖先元素
	TreeScope_Subtree     TreeScope = TreeScope_Element | TreeScope_Children | TreeScope_Descendants // 元素及其所有后代
)

树搜索范围常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationclient/ne-uiautomationclient-treescope

type TxtHitResult

type TxtHitResult int32

TxtHitResult 文本命中测试结果

const (
	TXTHITRESULT_NOHIT       TxtHitResult = iota // 未命中
	TXTHITRESULT_TRANSPARENT                     // 透明区域
	TXTHITRESULT_CLOSE                           // 接近
	TXTHITRESULT_HIT                             // 命中
)

文本命中测试结果常量

type UIA_EventId

type UIA_EventId int32

UIA_EventId UI Automation 事件标识符类型 用于标识 UI 自动化事件,如焦点变化、属性变化、结构变化等

const (
	UIA_ActiveTextPositionChangedEventId                 UIA_EventId = 20036 // 活动文本位置变化事件
	UIA_AsyncContentLoadedEventId                        UIA_EventId = 20006 // 异步内容加载事件
	UIA_AutomationFocusChangedEventId                    UIA_EventId = 20005 // 自动化焦点变化事件
	UIA_AutomationPropertyChangedEventId                 UIA_EventId = 20004 // 自动化属性变化事件
	UIA_ChangesEventId                                   UIA_EventId = 20034 // 变化事件
	UIA_Drag_DragCancelEventId                           UIA_EventId = 20027 // 拖拽取消事件
	UIA_Drag_DragCompleteEventId                         UIA_EventId = 20028 // 拖拽完成事件
	UIA_Drag_DragStartEventId                            UIA_EventId = 20026 // 拖拽开始事件
	UIA_DropTarget_DragEnterEventId                      UIA_EventId = 20029 // 拖拽进入目标事件
	UIA_DropTarget_DragLeaveEventId                      UIA_EventId = 20030 // 拖拽离开目标事件
	UIA_DropTarget_DroppedEventId                        UIA_EventId = 20031 // 拖拽放置事件
	UIA_HostedFragmentRootsInvalidatedEventId            UIA_EventId = 20025 // 托管片段根失效事件
	UIA_InputDiscardedEventId                            UIA_EventId = 20022 // 输入被丢弃事件
	UIA_InputReachedOtherElementEventId                  UIA_EventId = 20021 // 输入到达其他元素事件
	UIA_InputReachedTargetEventId                        UIA_EventId = 20020 // 输入到达目标事件
	UIA_Invoke_InvokedEventId                            UIA_EventId = 20009 // 调用事件(按钮点击)
	UIA_LayoutInvalidatedEventId                         UIA_EventId = 20008 // 布局失效事件
	UIA_LiveRegionChangedEventId                         UIA_EventId = 20024 // 实时区域变化事件
	UIA_MenuClosedEventId                                UIA_EventId = 20007 // 菜单关闭事件
	UIA_MenuModeEndEventId                               UIA_EventId = 20019 // 菜单模式结束事件
	UIA_MenuModeStartEventId                             UIA_EventId = 20018 // 菜单模式开始事件
	UIA_MenuOpenedEventId                                UIA_EventId = 20003 // 菜单打开事件
	UIA_NotificationEventId                              UIA_EventId = 20035 // 通知事件
	UIA_Selection_InvalidatedEventId                     UIA_EventId = 20013 // 选择失效事件
	UIA_SelectionItem_ElementAddedToSelectionEventId     UIA_EventId = 20010 // 元素添加到选择事件
	UIA_SelectionItem_ElementRemovedFromSelectionEventId UIA_EventId = 20011 // 元素从选择移除事件
	UIA_SelectionItem_ElementSelectedEventId             UIA_EventId = 20012 // 元素被选择事件
	UIA_StructureChangedEventId                          UIA_EventId = 20002 // 结构变化事件
	UIA_SystemAlertEventId                               UIA_EventId = 20023 // 系统警报事件
	UIA_Text_TextChangedEventId                          UIA_EventId = 20015 // 文本变化事件
	UIA_Text_TextSelectionChangedEventId                 UIA_EventId = 20014 // 文本选择变化事件
	UIA_TextEdit_ConversionTargetChangedEventId          UIA_EventId = 20033 // 文本编辑转换目标变化事件
	UIA_TextEdit_TextChangedEventId                      UIA_EventId = 20032 // 文本编辑变化事件
	UIA_ToolTipClosedEventId                             UIA_EventId = 20001 // 工具提示关闭事件
	UIA_ToolTipOpenedEventId                             UIA_EventId = 20000 // 工具提示打开事件
	UIA_Window_WindowClosedEventId                       UIA_EventId = 20017 // 窗口关闭事件
	UIA_Window_WindowOpenedEventId                       UIA_EventId = 20016 // 窗口打开事件
)

UI Automation 事件常量定义

type UiaPoint

type UiaPoint struct {
	X float64 // X 坐标
	Y float64 // Y 坐标
}

UiaPoint UI Automation 点结构(浮点数) 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ns-uiautomationcore-uiapoint

type UiaRect

type UiaRect struct {
	Left   float64 // 左边界
	Top    float64 // 上边界
	Width  float64 // 宽度
	Height float64 // 高度
}

UiaRect UI Automation 矩形结构(浮点数)

type VARIANT

type VARIANT struct {
	VT TagVarenum // 变体类型

	Val int64 // 值(根据 VT 类型解释)
	// contains filtered or unexported fields
}

VARIANT COM VARIANT 结构(64位版本) 用于存储各种类型的值,是 COM 中的通用数据类型

func Get_PropertyValue

func Get_PropertyValue(v *IUIAutomationPropertyCondition) *VARIANT

Get_PropertyValue 获取属性条件的属性值 参数: v - 属性条件接口 返回: VARIANT 值指针

func NewVariant

func NewVariant(vt TagVarenum, val int64) VARIANT

NewVariant 创建新的 VARIANT 结构 参数:

  • vt: 变体类型
  • val: 变体值

返回: 初始化的 VARIANT 结构

func VariantFromString

func VariantFromString(s string) (VARIANT, error)

VariantFromString 从字符串创建 BSTR 类型的 VARIANT 参数: s - 字符串值 返回: VARIANT 结构和可能的错误

type WindowInteractionState

type WindowInteractionState int32

WindowInteractionState 窗口交互状态

const (
	WindowInteractionState_Running                 WindowInteractionState = iota // 正在运行
	WindowInteractionState_Closing                                               // 正在关闭
	WindowInteractionState_ReadyForUserInteraction                               // 准备好用户交互
	WindowInteractionState_BlockedByModalWindow                                  // 被模态窗口阻塞
	WindowInteractionState_NotResponding                                         // 无响应
)

窗口交互状态常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-windowinteractionstate

type WindowVisualState

type WindowVisualState int32

WindowVisualState 窗口可视状态

const (
	WindowVisualState_Normal    WindowVisualState = iota // 正常状态
	WindowVisualState_Maximized                          // 最大化
	WindowVisualState_Minimized                          // 最小化
)

窗口可视状态常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-windowvisualstate

type ZoomUnit

type ZoomUnit int32

ZoomUnit 缩放单位

const (
	ZoomUnit_NoAmount       ZoomUnit = iota // 无缩放
	ZoomUnit_LargeDecrement                 // 大幅度缩小
	ZoomUnit_SmallDecrement                 // 小幅度缩小
	ZoomUnit_LargeIncrement                 // 大幅度放大
	ZoomUnit_SmallIncrement                 // 小幅度放大
)

缩放单位常量 参考: https://learn.microsoft.com/zh-cn/windows/win32/api/uiautomationcore/ne-uiautomationcore-zoomunit

Directories

Path Synopsis
example
calc_demo command
find_demo command
json_demo command
notepad_demo command
software command
tree_demo command
wechat_demo command
微信自动化机器人示例程序 演示如何使用 wechat 包进行微信自动化操作
微信自动化机器人示例程序 演示如何使用 wechat 包进行微信自动化操作
Package wechat 提供微信自动化操作功能 基于 Windows UI Automation 实现微信客户端的自动化控制 支持功能:搜索联系人、发送消息、读取会话列表、新消息监控等
Package wechat 提供微信自动化操作功能 基于 Windows UI Automation 实现微信客户端的自动化控制 支持功能:搜索联系人、发送消息、读取会话列表、新消息监控等

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL