You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找Voice Access调用的文本相关函数及调用顺序?

Voice Access文本相关命令调用流程与问题排查

一、调用流程的参考资源与获取方式

  • 核心参考是微软官方的UI Automation Provider SDK文档,Voice Access所有文本类语音命令都是基于这套规范与应用交互的,里面明确了各类文本操作对应的接口调用逻辑。
  • 聚焦文本操作的话,重点看TextPattern和TextRangePattern的官方说明,不同命令的调用链都是这些接口的组合:
    • 比如“Select paragraph”的大致流程:GetVisibleRanges→GetText→FindText(匹配段落边界)→ExpandToEnclosingUnit(扩展到段落)→Select
    • “Delete selected text”的基础流程:GetSelection→Delete(调用TextRange的Delete方法)
  • 用Windows SDK自带的Inspect.exe和UI Automation Verify工具,能实时捕获Voice Access与你的程序之间的接口调用序列,录制命令执行过程就能反向推导其他命令的完整调用链,比纯文档更实用。

二、Delete命令无响应的排查方向

  • 先确认是否完整实现了TextRangeProvider的Delete方法,这个是删除操作的核心接口,要正确处理文本范围删除,同步更新控件的实际文本和选择状态。
  • 检查调用Delete后是否触发了必要的UI Automation事件,比如TextPatternTextChangedEvent和TextPatternSelectionChangedEvent,Voice Access靠这些事件确认操作成功。
  • 排查Windows消息处理:Delphi文本控件要确保WM_GETOBJECT消息被正确处理,能返回你的自定义Provider实例,否则辅助技术的请求无法传递到你的实现代码。
  • 手动测试Delete方法:直接调用你实现的接口,看是否能正常删除文本并更新控件状态。如果手动调用有问题,就是接口实现bug;如果手动正常,那要断点检查Voice Access传递的文本范围偏移量是否符合你的处理逻辑。

内容的提问来源于stack exchange,提问作者Pablo Bähler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:07:10