本主题介绍 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)