Word 自定义模式

本主题介绍 windows Microsoft Word 中提供的自定义UI 自动化模式。 可以从具有文本模式的提供程序节点查询和使用这些模式。

出于试验目的,我们在PowerShell 库创建了特殊的 PowerShell 脚本,用于练习每个Word自定义模式。 这些脚本是在每个模式中显式调用的,也可以搜索CustomPatternClient_Word以查看所有Word脚本。 这些脚本可以在 PowerShell 窗口中针对Windows 11上正在运行的 Word 实例运行,以查看自定义模式生成的输出。 脚本通过基于注释的帮助自行记录。

这些模式main目标是提供与Word内容相关的其他信息,并执行无法通过现有UI 自动化接口实现的作。 自定义模式可以应用于辅助功能层次结构中的任何元素。 可以有一个或多个与元素关联的自定义模式,这些模式可由其自己的 GUID 标识。

所有方法通用的作数

每个自定义模式方法调用都有 3 个固定输入作数。

"操作数" 类型 说明
0 ConnectBoundObject Pattern 对象
1 GUID 方法 GUID
2 Int32 输入和输出参数的总数

返回值

此处介绍的每个方法都会返回 CallExtension 的 HRESULT,以指示成功或失败。 成功的作将返回S_OK,失败的作将产生UIA_E_INVALIDOPERATON。

ITextRangeCustomProvider

说明

Guid: {93514122-FF04-4B2C-A4AD-4AB04587C129}

这是文本范围的模式,并应用于具有文本模式集的辅助功能层次结构中的Word节点。 ITextRangeCustomProvider 提供了一组适用于文本范围的其他方法。 客户端可以查询 GetEnlcosingElement 以获取文本范围,并使用自定义模式 GUID 在元素支持自定义模式时检查。

PowerShell 脚本

CustomPatternClient_Word_TextRangeProvider.ps1

方法

GetCustomAttributeValue

Guid: {081ACA91-32F2-46F0-9FB9-017038BC45F8}

返回文本范围(如行号、列号、节号、页码和书签)的自定义属性值。 它类似于适用于 ITextRange 的 GetAttributeValue API,并返回一个 VARIANT,其中包含当前支持的自定义属性的整数值或字符串值。 输入参数和返回值都打包在 IInspectable 中。

"操作数" Role 类型 说明
3 Input ITextRangeProvider 输入文本范围
4 Input Int32 输入属性标识符
5 输出 Int32 或 String 自定义属性的返回值

目前Word支持以下自定义属性标识符集:

属性标识符 输入值 返回类型
行号 0 Int32
页码 1 Int32
列号 2 Int32
学科编号 3 Int32
书签名称 4 String
页面上的列 5 Int32
标题展开/折叠状态 6 Int32

对于“标题展开/折叠状态”,以下是可能的值:

状态名称 输出值 说明
Collapsed 0 没有子项可见
Expanded 1 所有子级都可见
叶节点 2 元素不会展开或折叠

MoveBySentence

Guid: {F39655AC-133A-435B-A318-C197F0D3D203}

与 ITextRangeProvider 的 Move API 一样,它按指定的句子单位数向前或向后移动文本范围。

"操作数" Role 类型 说明
3 输入/输出 ITextRangeProvider 输入和输出文本范围
4 Input Int32 要移动的输入单位计数
5 输出 Int32 实际移动单位的返回值

MoveEndpointBySentence

Guid: {368E89A2-1BC2-4402-8C58-33C63ECFFA3B}

与 ITextRangeProvider 的 MoveEndpoint API 一样,它将文本范围的一个终结点移动文档范围内指定数量的句子单位。

"操作数" Role 类型 说明
3 输入/输出 ITextRangeProvider 输入和输出文本范围
4 Input Int32 要移动的终结点
5 Input Int32 要移动的输入单位计数
6 输出 Int32 实际移动单位的返回值

终结点值与 TextPatternRangeEndpoint 枚举相同。

ExpandToEnclosingSentence

Guid: {98FE8B34-F317-459A-9627-21123EA95BEA}

与 ITextRangeProvider 的 ExpandToEnclosingUnit API 一样,如果范围小于句子单位,则范围将扩展;如果范围长于句子单位,则缩短范围。

"操作数" Role 类型 说明
3 输入/输出 ITextRangeProvider 输入和输出文本范围

GetMathText

Guid: {380198E5-A51F-4618-A78D-57E9568A3862}

对于数学类型且批注为“数学”的文本范围,此 API 将支持不同的数学文本格式,例如 MathML。 Word目前仅支持 MathML 格式。 此 API 类似于 ITextRangeProvider 的 GetText,不带任何长度参数,并返回数学区域的完整文本。

"操作数" Role 类型 说明
3 Input ITextRangeProvider 输入文本范围
4 Input Int32 数学格式类型
5 输出 String 给定格式的数学文本
数学格式类型 输入值 (Int32) 返回类型
MathML 0 String

要求

Microsoft 365 版本 2112 (内部版本 14725.xxxxx)

另请参阅

UIA_AutomationIdPropertyId

自定义属性、事件和控件模式

实现自定义控件模式

Word自定义模式客户端脚本