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::RemoveActiveTextPositionChangedEventHandler、IUIAutomation6 接口