问题标签 [iaccessible]

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 回答
746 浏览

c# - AccessibleChildren 返回 null

我正在将一些使用该AccessibleChildren方法的 VBA 代码转换为 C#,但我遇到了一些问题。声明如下所示:

我正在运行的代码如下所示:

问题是当我在有效的 IAccessible(如 Word 中的功能区)上调用此方法时,childrenArray[0]它等于null. 有人有想法么?我的一个想法(或者至少对我来说没有意义的东西)是 VBA 代码传递了数组的第一个元素:

谢谢!

0 投票
0 回答
313 浏览

delphi - 如何独立于 UI 语言识别 Google Chrome 中的 Omnibox IAccessible 子对象?

使用带有 OleAcc 的 Delphi XE2,我能够遍历 Google Chrome 窗口的所有 IAccessible 子对象,get_AccNameget_AccValue分别使用 和 获取它们的 NAME 和 VALUE,以搜索包含 URL 作为 IAccessible VALUE 的 Omnibox 控件。不幸的是,Chrome 中的 IAccessible NAME 是本地化的,因此在具有德语 UI 语言的 Chrome 中,要识别 Omnibox 控件,我必须使用 IAccessible NAME“Adress- und Suchleiste”,它适用于 Chrome 中的德语 UI 语言。这个 IAccessible NAME 对于每种 Chrome UI 语言都是不同的,因此要使用所有 Chrome UI 语言识别 Omnibox 控件,我必须将所有 Chrome IAccessible 子对象与 Omnibox 控件的所有本地化 IAccessible NAME 变体进行比较。所以我的问题是:

是否有其他方法可以独立于 UI 语言来识别 Omnibox IAccessible 子对象?

我使用 MS Inspect.exe 在 Chrome 中查看 Omnibox 子对象的所有 IAccessible 属性,但没有找到任何似乎对此有用的东西。

0 投票
1 回答
2897 浏览

c++ - 将 IAccessible 与 Google Chrome 一起使用会返回不完整的树

我正在尝试为 Google Chrome 创建 QA 自动化,以模拟点击并接收选项卡按钮上的点击事件。

我正在使用IAccessible接口AccessibleChildren API来获取完整的可访问元素树。

当使用 AccExplorer 2.0 查看树时 - 它看起来很棒(见最后的图片)。

但是我的程序只显示了部分树,并且名称与我在 AccExplorer 上看到的不匹配。

我在跑:

  • 铬 37 测试版
  • 赢 7 64 位

任何想法为什么我不能查看完整的树?

谢谢

这是我程序的源代码(C++):( 类似于 MSDN 示例)

这是控制台输出:

Here is an AccExplorer screenshot showing the full tree: (some nodes are collapsed) AccExplorer working example


Edit:
When Using OBJID_WINDOW instead OBJID_WINDOW (as in the example, in AccessibleObjectFromWindow) - I get a tree with more nodes, but still I can't see the tab elements.

0 投票
3 回答
1164 浏览

c# - Microsoft UIAutomation 并不总是在某些计算机上工作。C#

我有一些用于从 Chrome 中提取 url 的 C# 代码。它通常适用于 Win7/Win 8.1,但在某些具有相同配置的计算机上则不起作用。而且,这些配置之间可能没有区别。为什么会这样?

0 投票
1 回答
1390 浏览

delphi - Delphi XE中未声明的标识符AccessibleObjectFromEvent

如何解决以下错误,他似乎找不到函数 AccessibleObjectFromEvent。我使用的是 Delphi XE6 版本。

此项目列出浏览器中的活动 url。

图片

在此处输入图像描述

http://i.imgur.com/2JbiIR7.png

这是我的代码:

0 投票
0 回答
256 浏览

c++ - 在 Google Chrome 中使用 IAccessible 模拟“Enter”键按下

我正在尝试为 Google Chrome 创建 QA 自动化,以模拟 URL 导航。我得到了正确的对象“地址和搜索栏”,并成功设置了 URL。

在设置 URL 后,我无法弄清楚如何模拟“Enter”键按下。我已经尝试过accDoDefaultAction方法,但该对象不支持它。

有什么建议么?

谢谢

0 投票
1 回答
420 浏览

c++ - 调用 AccessibleChildren 时线程冻结

我的 C++ 应用程序会时不时地使用基于此页面的 MSDN 示例的代码遍历多个应用程序的 MSAA 树:https ://msdn.microsoft.com/en-us/library/windows/desktop/dd317975(v=vs.85 ).aspx

它工作得很好,直到几个月前我开始注意到有时线程在 AccessibleChildren 调用上冻结。

这是我所知道的:

  • 这不会经常发生
  • 它发生在行走不同应用程序的树时。
  • 它绝对没有连接到当前节点的子节点数量,因为我已经调试了底部调用childCount等于 1 的小型转储。
  • 它发生在不同的PC上。
  • 处于这种位置的线程永远不会醒来。一旦发生冻结,线程将保持此状态,直到重新启动应用程序。
  • 有时线程在这样的迭代中简单地死掉了,在这种情况下,我无法捕捉到它的堆栈跟踪。然后应用程序的其余部分继续运行,但转储显示给定线程不再工作,尽管它的任务基本上是无限循环和睡眠。我认为它与冻结有关。不知何故。

我的问题是:有人可以指出这种冻结的原因以及如何防止它们吗?如果没有,有没有办法将递归移动到另一个线程,可以安全地从另一个线程“超时”?

这是此类事件的示例堆栈跟踪,其中 top 是最嵌套的调用。我从这里删除了我的递归以缩短阅读时间。

0 投票
0 回答
855 浏览

c++ - 如何在 C++ 中获取 chrome 当前版本的当前 URL

我想使用 MSAA api 从 Google Chrome 获取 URL,我已经在 StackOverflow 上找到了这个,但我想复制这种行为 =>如何获取 chrome 当前版本的当前 URL,而不使用AccessibleObjectFromEvent但使用AccessibleObjectFromWindow。但在这些行之后:

szAddressBox 为空。我哪里错了?

0 投票
0 回答
121 浏览

vb.net - 将 IAccessible 对象分配给更方便的对象的可能性

我正在 Visual Studio 和 VB 中为 Excel 编写插件。我想跟踪菜单(功能区)单击操作。

我创建了一些真正适用于 IAccessible 的东西,但它很慢,因为每次我进行检查时,我都必须浏览整个系统以找出我的特定菜单项是否存在以及是否具有适当的状态和角色。

有没有办法将这些项目(一旦找到)分配给更方便的对象,比如按钮,然后附加一个“点击”事件?或任何其他不重复系统检查的方法?

0 投票
1 回答
431 浏览

c++ - Microsoft Active Accessibility、VB6 和 Ranorex

Ranorex 是用于 Windows 的用户界面测试工具。如果 UI 元素支持 Microsoft Active Accessiblity (MSAA),那么它可以检索有关元素的丰富信息,这对于编写测试脚本非常有用。

我们在 VB6 中有很多不支持 MSAA 的遗留代码。

我正在尝试将这种支持添加到我们的一些 VB6 用户控件中,如下所示。

我使用 ATL 在 C++ 中创建了一个 ActiveX 组件。这包含一个实现接口 IAccessible 的辅助类。它还包含一个可以从 VB6 调用的初始化函数。

VB6 UserControl 创建辅助对象并将其窗口句柄和名称传递给初始化函数。帮助对象子类化窗口并处理 WM_GETOBJECT 消息,为窗口提供 IAccessible 接口。

我已经调试了代码,据我所知,它正在工作。Ranorex Spy 工具获取 IAccessible 接口并调用接口上的方法。

但是,Ranorex 实际上并没有显示它似乎通过此界面获取的任何信息。

我知道这是一个非常具体的问题,但是是否有人有实现 IAccessible 以在 Ranorex 或其他类似测试工具中使用的经验?

我很乐意提供我的代码,但我认为这对于正常发布来说太过分了。