2

我正在研究用于控制文本的 Microsoft UIAutomation,但发现它没用。我需要做以下事情:

  • 获取插入符号位置
    • 这篇文章向我暗示我需要跟踪插入符号,如果我不知道它的原始位置,这将不起作用....
  • 在特定位置插入文本
    • ValuePattern只发现使用's覆盖整个字段的能力SetValue
  • 设置字体粗细
    • 我可以读取字体粗细,但无法设置它
  • ETC

到目前为止,我已经阅读了许多文章,但没有人指出这些的可能性。这个 SO 问题对我开始很有帮助,但是当我试图深入挖掘时,我遇到的问题多于答案。是我去 MS Accessibility Automation 的唯一选择,它在 WPF 虚拟化等方面表现不佳。

如果有人可以为我指出一篇有用的文章或提供上述缺点的示例,那就太好了。但是,此时我并不抱希望,因为这一切似乎都导致了获取信息的方法,但没有更新信息。

编辑

我什至试图深入研究UIAutomationClient.dll,似乎确实没有对此的支持。似乎 UIA 主要用于提取粗略的信息并单击周围。没有真正的文本支持

这是另一个 SO 问题...与此问题相对相似...似乎验证 UIA 对我的需求无用..

哈克解决方法

我们的解决方法是使用 UIA 获取一般上下文,然后使用 AutoIt SendKeys

4

1 回答 1

0

您指向的文章描述了希望支持 UI 自动化的 TextPattern 的应用程序需要如何工作,而不是希望使用 TextPattern检索信息的客户端需要如何工作。特别是,实现者需要跟踪插入符号;客户没有。

话虽如此,TextPattern旨在检索信息,而不是设置它;在与旨在插入文本的文本服务框架广泛合作之后,我可以理解为什么。(许多应用程序的设计初衷并不是允许任意未经请求地操纵其数据结构;允许应用程序决定何时可以操纵它们严重扭曲了文本服务的设计。)

前两项非常简单。您可以使用 IUIAutomationTextPattern::GetSelection 获取选定的文本;这将返回一个文本范围的集合,您可以提取其位置等。

虽然您不能直接操作文本范围的内容,但您可以选择它,然后使用 SendKeys 等生成输入。

于 2013-07-28T06:58:08.840 回答