问题标签 [microsoft-ui-automation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
751 浏览

user-interface - 有没有办法在某个时间转储 Windows UI 自动化树?

我正在尝试调试我开发的一些脚本(使用 Windows UI 自动化支持来识别 GUI 对象)并且由于在树中找不到某些控件而间歇性地失败。我还使用屏幕截图来检查我正在测试的窗口的状态,并且控件似乎在 GUI 中,但是我在树内的搜索没有找到它们(即使在几秒钟的睡眠之后)。当我使用 inspect.exe 检查树时,对象就在那里。

有没有办法转储该树以供以后分析?到目前为止,我发现的唯一方法是递归地爬取整棵树,但这是不可行的,因为它需要大量时间。

0 投票
1 回答
789 浏览

c# - 如何访问现有 AutomationPeer 的基础元素?

我最近开始学习/使用 AutomationPeer 类以及如何覆盖它的功能。我的一个问题是,是否有提取在 AutomationPeer 初始化期间传入的 UIElement。

一个例子:

0 投票
1 回答
908 浏览

microsoft-ui-automation - 使用 UIAutomation 处理 ProgressBar 的值变化

当 ProgressBar 的值随 .NET UIAutomation 框架发生变化时,如何通知我?我在 AutomationElement 类中没有看到这样的属性。

0 投票
2 回答
1145 浏览

c# - 如何从 CurrentControlType 属性了解 UI 元素的 ControlType

基本上我正在使用 UIAutomationClient.Interop.dll 进行我目前正在做的一些 UI 工作,我面临以下问题:

  • 我有一个 UI 元素,我想知道它的控件类型。
  • UIAutomationClient.Interop.dll公开以下属性:IUIAutomationElement::CurrentControlType 属性
  • 上面的属性返回一个表示控件类型 ID 但不是控件类型对象的 Int。

问题:

  • 只知道它的 ID,我怎么能知道 UI 元素的 ControlType 是什么?我无法找到任何其他有用的信息。

注意

我正在使用 UIAutomationTypes.dll 来定义 ControlType 对象

任何想法?

0 投票
2 回答
1102 浏览

delphi - Delphi:缺少 UI 自动化方法的接口声明

这么基本的问题,但我被卡住了......

我正在尝试在 Windows 7 上使用 Delphi 2007 (Win32) 开始使用 UI 自动化。似乎我没有声明我需要使用的某些方法和类型。我在这台机器上安装了 .NET Framework 4.x,但我从 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\UIAutomationClient.dll ... 导入了一个类型库,位于 UIAutomationClient_TLB 中。我看到的是:

我不确定这是否是问题(错误版本)。我可以毫无问题地声明以下内容:

但是 IUIAutomationElement 的方法似乎丢失了。例如,声明方法的接口中没有任何内容:

...根据 msdn.microsoft.com 的说法,这是一种至少可以追溯到 .NET 3.0 的接口方法。

我在哪里/如何获得必要的接口声明?这可能是注册问题吗?如果是这样,需要注册什么,如何注册?

最终,我想通过 UI 自动化从控件中检索文本,但从技术上讲,我认为您必须先编译代码才能将其视为失败。;)

0 投票
1 回答
1576 浏览

.net - 使用 Microsoft UI 自动化获取所有 Firefox 打开的 Url

我正在尝试检索在 Firefox 选项卡中打开的所有 url。

这就是我到目前为止所做的,代码获取所有 Firefox url,是的,但它也从每个打开的文档中检索所有 url,例如来自论坛的嵌入式 youtube url,等等......我不是感兴趣的。

我该如何解决?

而且它也会引发异常

Microsoft.VisualBasic.dll 中出现了“System.InvalidOperationException”类型的第一次机会异常

尝试在此处转换为 String 时:

...但我想如果我可以正确“过滤”控件以检索正确的 url,那么这个问题应该可以解决。

此代码的另一个问题是,UI 自动化使我的 Firefox 进程无法从任务栏最小化,在运行这些 UI 自动化指令后,我无法按 Firefox 任务栏按钮来最大化/最小化窗口。

用法:

0 投票
2 回答
1968 浏览

ui-automation - Microsoft UI 自动化:调用模式异常

我正在尝试使用调用模式单击按钮。

它抛出 COMException,我不知道为什么?

当我运行此代码时,实际上按下了按钮并且功能运行良好。但是它只是停止了一段时间,并抛出了这个异常。

0 投票
3 回答
4360 浏览

c# - White 如何处理已经运行的应用程序?

我正在使用 testStack/White 库来自动化应用程序。现在它工作正常,但如果应用程序已经在运行,它会抛出异常。有什么方法可以检查,例如应用程序是否已经在运行,然后不要调用它。我的意思是,那我们可以跳过这行代码

我找不到任何关于 White 的好的文档。任何帮助将不胜感激。

0 投票
0 回答
1032 浏览

accessibility - UI 自动化可以访问每个 LegacyIAccessible 属性吗?(检查.exe)

查看 inspect.exe 有几个属性,例如

我想知道,HelpText-Prop 是否可能LegacyIAccessible.Help-Prop有所不同?(也许在特殊情况下?!)此外,我很感兴趣,如果每个 LegacyIAccessible-Prop 都可以通过 UI 自动化 100% 获得? 干杯

0 投票
1 回答
636 浏览

winforms - 如果我以编程方式激活另一个应用程序中的窗口,我能否检测到它何时失去焦点?

请耐心等待,我是一名尝试 WinForms 应用程序的 Web 开发人员。

回复时请不要评论我的应用程序的目的是否是“最佳实践”等......这是我需要编写的应用程序,无论好坏,我不能浪费时间解释“为什么” . 我要求您就(1)我正在尝试做的事情是否可能(2)完成我正在尝试做的事情的“最佳”方式提供建议。

所以,这就是我正在尝试做的事情:我需要编写一个 WinForms 应用程序,该应用程序将从供应商应用程序读取数据,向最终用户显示某些记录并允许他们选择将记录“传输”到另一个供应商应用程序。挂断……目标系统不公开任何 api,没有存储过程,没有提供用于插入数据的“好”方法,除了将其输入到他们的 GUI 中。(相信我,一个由 3 人组成的团队调查了实现自动化的所有可能性)

所以这个 WinForms 应用程序将利用 Microsoft.VisualBasic.Interaction.AppActivate(string) 并将数据直接插入到目标系统输入窗口的字段中。目标系统在某些字段上具有 F1 帮助,因此如果您将焦点放在该字段上并按“F1”,或者,如果您在其中一个字段中输入无效数据,则会弹出一个名为“帮助”的子窗口以提供指导.

因此,我的应用程序正在插入,使用 SendKeys.SendWait(string) 将数据写入此应用程序的字段,然后遇到一些无效数据并弹出帮助窗口,我的应用程序继续写出其余数据,但现在它都被写入帮助窗口中的 1 字段,因为该窗口现在具有焦点。

百万美元的问题...

有没有办法从我的 WinForms 应用程序中检测到帮助窗口已在目标系统中激活,以便我可以解决它?


更新

第一次尝试这个应用程序时,我使用了 UIAutomationClient 库。我无法成功激活目标窗口并写入第一个字段。经过一天的战斗,我不得不开始寻找替代品。