问题标签 [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 投票
0 回答
329 浏览

c# - c# 如何使用 AccessibleObjectFromPoint 从浏览器中查找 URL

嗨,我做了一些研究,找到了使用 AccessibleObjectFromPoint 获取浏览器 URL 的方法,或者通过这个你可以访问任何 UI 元素,所以请告诉我我的代码有什么问题

错误:- **** 每次都获取 ChildID = 0 不知道为什么 *******

0 投票
0 回答
577 浏览

c++ - IServiceProvider::QueryService 在具有 IE11 的 Windows 服务器 2008 R2 上失败并出现错误 -2147024809

  1. 获取 Window 类 Internet Explorer_Server 的页面内元素或文档的可访问窗口的 IAccessible 指针成功使用代码(其中 hwnd 是 Internet_Explorer_server 的句柄)AccessibleObjectFromWindow(hwnd, OBJID_WINDOW, IID_IAccessible, (void**)&pAcc)
  2. 为从第 1 步获得的可访问对象获取 IServiceProvider 接口指针也成功使用了代码HRESULT hr; hr = pAcc->QueryInterface(IID_IServiceProvider, (void **)&pSP)

但是,当尝试使用代码对获得的 IServiceProvider 使用 QueryService 调用时,HRESULT hr = pServiceProvider->QueryService(IID_IHTMLWindow2, IID_IHTMLWindow2, (void**)&pWindow)它会失败并返回 -2147024809,即 0x80070057。不知道为什么会发生这种情况,只是想知道服务器计算机(Windows Server 2008 R2)上是否有任何特定设置阻止此调用成功。

此外,我描述的上述步骤在 Windows 7 环境中是成功的。
注意:安装的 Internet Explorer 版本为 10

0 投票
0 回答
416 浏览

c++ - IAccessible (MSAA):访问 Firefox/Chrome 会导致 Adob​​e Accessibility.api 调用

我注意到 Process Monitor 通过 IAccessible (MSAA) 接口访问 Mozilla Firefox 会导致文件访问名为“Accessibility.api”的 Adob​​e Reader 文件。当我使用 Microsoft 的 Inspect.exe(使用 MSAA)访问 Mozilla Firefox 时,我没有获得这些文件访问权限。

这是导致大约 28 次访问“Accessibility.api”文件访问的代码 (C++):

每个::AccessibleChildrenorIEnumVariant::Next调用也会导致每个子元素大约 28 次访问。

如何防止像 Inspect.exe 这样的文件访问?

2018-11-30 更新

我用 Chrome 得到了同样的结果。

Adobe Reader 未作为插件安装在这些浏览器上。

我尝试重命名 Accessible.api 文件(位于 C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Accessibility.api)以禁用它,但之后我无法访问任何浏览器元素更多的。生成的子元素不同。Inspect.exe(使用 MSAA)或Ranorex Spy(没有浏览器扩展)没有这些问题。我也用AccProbe检查了结果,这个工具产生了和我一样的结果。

2018-12-03 更新

看起来这只影响 32 位应用程序。Inspect.exe 和 Ranorex Spy 是 64 位应用程序。我的应用程序和 AccProbe(安装的 JRE 是 32 位)都是 32 位的。因为 Adob​​e Reader 是 32 位的,所以我认为这就是为什么只有 32 位应用程序会受到影响。我还可以使用 32 位版本的 Ranorex Spy 重现此行为。

现在我知道该行为不是由错误的实现引起的。但是为什么对这个 Adob​​e Reader Accessibility.api 文件进行如此多的访问的问题仍然悬而未决......

0 投票
1 回答
1329 浏览

accessibility - IAccessible、IAccessible2、UIAutomation 和 MSAA 有什么区别?

我正在开始研究可访问性,我对遇到的不同技术感到有些困惑。

IAccessible 和 IAccessible2 有什么区别?我原本以为 IAccessible2 可能是 IAccessible 的更新版本,但经过进一步研究,它似乎实际上是由微软的竞争对手制造的。维基百科说“它被定位为微软新 UI 自动化 API 的替代品。” MSAA 如何适应这一点?

谁能澄清 IAccessible、IAccessible2、UI 自动化 API 和 MSAA 之间的区别?为什么一个可能比另一个更可取?

0 投票
0 回答
840 浏览

c# - C# - 哪个接口未注册,如何注册?

我正在尝试编写一个控制台应用程序,它将在 Windows 10 上的任何打开的程序中导航 AutomationElement 树。我的应用程序实际上适用于我尝试过的每个打开的程序......除了 Chrome。某些 Chrome 安装工作,但有些不工作。这种差异似乎没有任何明显的原因。我找到了这篇博文,作者解释说 Chrome 的 AutomationElement 树是不可访问的,并提供了 C# 代码以使其可访问。想我会试试的。

我必须重写大量的函数才能让它编译和运行,如下所示(通过将我的代码与博客文章进行比较)。

我还必须Win32从头开始创建他引用的类,因为博客文章没有解释它是什么或它来自哪里。我发现以下两个链接对重新创建Win32课程非常有帮助。

签名似乎是正确的,所以我认为我在正确的轨道上。这是我的课。

我遇到的问题try-catch在于我的GetIAccessible2()功能。在那之前,一切似乎都运行良好。但是在那条线上,我调用QueryService()函数的地方,我得到错误“接口未注册”。它没有告诉我哪些接口没有注册,也没有告诉我如何注册。

坦率地说,大部分代码对我来说都是相当神秘的,我很惊讶我已经做到了。但是,我需要它来实际工作,而且还没有。

哪些接口未注册,如何注册?

我非常感谢您能提供的任何帮助(最好是简单的英语,使用任何必要的代码)!

提前致谢!

[编辑]

我修复了我的错误。但是,我不确定它是否修复了 Chrome。这是我为感兴趣的各方提供的新代码。

0 投票
0 回答
195 浏览

c# - IAccessible 的 accDoDefaultAction 被 ROLE_SYSTEM_PUSHBUTTON 忽略

我目前正在使用 IAccessible 并尝试自动单击并做一些事情。

它适用于几个 Pushbuttons、Splitbutton 和其他元素。

最后一个元素是 Windows 系统设置,它是 ROLE_SYSTEM_PUSHBUTTON。

accDoDefaultAction 被忽略,与窗口句柄的 SendMessage 和 PostMessage 相同。

虚拟代码:

它返回一个 HWND,但即使是到 HWND 的 PostMessage 也会被忽略。

Role 是ROLE_SYSTEM_PUSHBUTTONStateSTATE_SYSTEM_FOCUSABLE和 childId CHILDID_SELF。这意味着它可以被访问并且通常被切换。它不是只读的。

0 投票
0 回答
60 浏览

automation - P/Invoke 不能从非托管代码返回 IAccessible,它总是返回 null

我使用以下非托管代码在 IAccessible 树中搜索 IAccessible,但托管端的返回 IAccessible ansIacc 始终为空。

非托管代码(被调用者):

托管代码(调用者):

任何人都可以提出一些建议来改进上述代码以返回正确的答案(搜索结果)?谢谢。

0 投票
0 回答
80 浏览

automation - 如何在运行时检查两个 IAccessible 是否相同?(在 C++ 端)

如何在运行时检查两个 IAccessible 是否相同?MSAA似乎没有提供任何方法。我知道

1.我们可以检查这两个IAccessible对象的多个属性,但是搅拌cmp/string get/role get/role cmp/...可能会消耗很多时间。

2.比较这两个对象的最简单方法是比较地址,但我失败了。

任何人都可以给我一个例子或给我一个提示?非常感谢!

0 投票
1 回答
91 浏览

ui-automation - 是否存在一种搜索 IUIAutomationElement 指定名称是否包含空格的方法?

我发现如果我搜索名称包含空格的 IUIAutomationElement,FindFirst 方法会返回 nullptr,而不是正确答案。

我检查了我期望在树中返回的 target_uia 元素。

我怎样才能解决这个问题?

0 投票
0 回答
40 浏览

vb.net - 有人可以提供一个在 VB.NET 中使用 AccessibleChildren 的工作示例吗?

几个月来我一直在尝试使用 VB.Net 中的 AccessibleChildren 函数,但我无法实现......

有人可以提供一个返回有意义的 AccessibleChildren 应用程序的工作示例吗?