IUIAutomation6::AddActiveTextPositionChangedEventHandler 方法(uiautomationclient.h)

注册处理活动文本位置更改时的方法。

重要

Microsoft UI 自动化客户端应使用 IUIAutomationEventHandlerGroup 接口 方法来注册事件侦听器,而不是此处和各种 IUIAutomation 接口 命名空间中定义的单个事件注册方法。

语法

HRESULT AddActiveTextPositionChangedEventHandler(
  [in] IUIAutomationElement                               *element,
  [in] TreeScope                                          scope,
  [in] IUIAutomationCacheRequest                          *cacheRequest,
  [in] IUIAutomationActiveTextPositionChangedEventHandler *handler
);

参数

[in] element

指向与事件处理程序关联的 UI 自动化元素的指针。

[in] scope

要处理的事件的范围;也就是说,无论是在元素本身上,还是在元素的祖先和后代上。

[in] cacheRequest

指向缓存请求的指针;如果不需要缓存,则为 NULL。

[in] handler

指向处理活动文本位置已更改事件的对象的指针。

返回值

如果此方法成功,它将返回S_OK。 否则,它将返回 HRESULT 错误代码。

言论

在实现事件处理程序之前,应熟悉 了解线程处理问题中所述的线程问题。

活动文本位置由只读文本元素(例如 Web 浏览器、可移植文档格式(PDF)文档或 EPUB 文档)之间(或用于引用资源中某个位置的片段标识符)内或之间导航事件指示。 示例包括:

  • 导航到同一网页中的书签
  • 导航到不同网页上的书签
  • 激活指向同一 PDF 中不同位置的链接
  • 在同一 EPUB 中激活指向不同位置的链接

使用此事件处理程序可将书签/目标的视觉位置与只读文本元素中的焦点位置同步,该位置在使用书签或片段标识符时可能会发生分歧。

例如,当调用同一页面定位点(<a href="#C4">Jump to Chapter 4</a> ...<h1><a name="C4">Chapter 4</a></h1>)时,视觉位置会更新,但 UI 自动化客户端将保留在原始位置。 这会导致从原始位置(而不是新位置)开始执行文本读取或移动下一项命令等操作。

同样,激活新页面 URI(带有片段标识符:(<a href="www.blah.com#C4">Jump to Chapter 4</a>)将加载新页面并跳转到指定的书签,但将 UI 自动化客户端保留在页面顶部。

对于可编辑的文本元素(如 编辑富编辑控件),可以侦听 SelectionChanged 事件。

如果事件与请求同时收到取消订阅事件,则事件可以在取消订阅处理程序后传递到事件处理程序。 最佳做法是遵循组件对象模型 (COM) 标准,并避免销毁事件处理程序对象,直到其引用计数达到零。 取消订阅事件后立即销毁事件处理程序可能会导致访问冲突(如果事件传递延迟)。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1809 [仅限桌面应用]
支持的最低服务器 Windows Server 版本 1709 [仅限桌面应用]
目标平台 窗户
标头 uiautomationclient.h (包括 UIAutomation.h)

另请参阅

IUIAutomation6::RemoveActiveTextPositionChangedEventHandlerIUIAutomation6 接口