问题标签 [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.
c# - c# 如何使用 AccessibleObjectFromPoint 从浏览器中查找 URL
嗨,我做了一些研究,找到了使用 AccessibleObjectFromPoint 获取浏览器 URL 的方法,或者通过这个你可以访问任何 UI 元素,所以请告诉我我的代码有什么问题
错误:- **** 每次都获取 ChildID = 0 不知道为什么 *******
c++ - IServiceProvider::QueryService 在具有 IE11 的 Windows 服务器 2008 R2 上失败并出现错误 -2147024809
- 获取 Window 类 Internet Explorer_Server 的页面内元素或文档的可访问窗口的 IAccessible 指针成功使用代码(其中 hwnd 是 Internet_Explorer_server 的句柄)
AccessibleObjectFromWindow(hwnd, OBJID_WINDOW, IID_IAccessible, (void**)&pAcc)
- 为从第 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
c++ - IAccessible (MSAA):访问 Firefox/Chrome 会导致 Adobe Accessibility.api 调用
我注意到 Process Monitor 通过 IAccessible (MSAA) 接口访问 Mozilla Firefox 会导致文件访问名为“Accessibility.api”的 Adobe Reader 文件。当我使用 Microsoft 的 Inspect.exe(使用 MSAA)访问 Mozilla Firefox 时,我没有获得这些文件访问权限。
这是导致大约 28 次访问“Accessibility.api”文件访问的代码 (C++):
每个::AccessibleChildren
orIEnumVariant::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 位的。因为 Adobe Reader 是 32 位的,所以我认为这就是为什么只有 32 位应用程序会受到影响。我还可以使用 32 位版本的 Ranorex Spy 重现此行为。
现在我知道该行为不是由错误的实现引起的。但是为什么对这个 Adobe Reader Accessibility.api 文件进行如此多的访问的问题仍然悬而未决......
accessibility - IAccessible、IAccessible2、UIAutomation 和 MSAA 有什么区别?
我正在开始研究可访问性,我对遇到的不同技术感到有些困惑。
IAccessible 和 IAccessible2 有什么区别?我原本以为 IAccessible2 可能是 IAccessible 的更新版本,但经过进一步研究,它似乎实际上是由微软的竞争对手制造的。维基百科说“它被定位为微软新 UI 自动化 API 的替代品。” MSAA 如何适应这一点?
谁能澄清 IAccessible、IAccessible2、UI 自动化 API 和 MSAA 之间的区别?为什么一个可能比另一个更可取?
c# - C# - 哪个接口未注册,如何注册?
我正在尝试编写一个控制台应用程序,它将在 Windows 10 上的任何打开的程序中导航 AutomationElement 树。我的应用程序实际上适用于我尝试过的每个打开的程序......除了 Chrome。某些 Chrome 安装工作,但有些不工作。这种差异似乎没有任何明显的原因。我找到了这篇博文,作者解释说 Chrome 的 AutomationElement 树是不可访问的,并提供了 C# 代码以使其可访问。想我会试试的。
我必须重写大量的函数才能让它编译和运行,如下所示(通过将我的代码与博客文章进行比较)。
我还必须Win32
从头开始创建他引用的类,因为博客文章没有解释它是什么或它来自哪里。我发现以下两个链接对重新创建Win32
课程非常有帮助。
- https://www.pinvoke.net/default.aspx/oleacc.accessibleobjectfromwindow
- http://pinvoke.net/default.aspx/Interfaces/IServiceProvider.html
签名似乎是正确的,所以我认为我在正确的轨道上。这是我的课。
我遇到的问题try-catch
在于我的GetIAccessible2()
功能。在那之前,一切似乎都运行良好。但是在那条线上,我调用QueryService()
函数的地方,我得到错误“接口未注册”。它没有告诉我哪些接口没有注册,也没有告诉我如何注册。
坦率地说,大部分代码对我来说都是相当神秘的,我很惊讶我已经做到了。但是,我需要它来实际工作,而且还没有。
哪些接口未注册,如何注册?
我非常感谢您能提供的任何帮助(最好是简单的英语,使用任何必要的代码)!
提前致谢!
[编辑]
我修复了我的错误。但是,我不确定它是否修复了 Chrome。这是我为感兴趣的各方提供的新代码。
c# - IAccessible 的 accDoDefaultAction 被 ROLE_SYSTEM_PUSHBUTTON 忽略
我目前正在使用 IAccessible 并尝试自动单击并做一些事情。
它适用于几个 Pushbuttons、Splitbutton 和其他元素。
最后一个元素是 Windows 系统设置,它是 ROLE_SYSTEM_PUSHBUTTON。
accDoDefaultAction 被忽略,与窗口句柄的 SendMessage 和 PostMessage 相同。
虚拟代码:
它返回一个 HWND,但即使是到 HWND 的 PostMessage 也会被忽略。
Role 是ROLE_SYSTEM_PUSHBUTTON
StateSTATE_SYSTEM_FOCUSABLE
和 childId CHILDID_SELF
。这意味着它可以被访问并且通常被切换。它不是只读的。
automation - P/Invoke 不能从非托管代码返回 IAccessible,它总是返回 null
我使用以下非托管代码在 IAccessible 树中搜索 IAccessible,但托管端的返回 IAccessible ansIacc 始终为空。
非托管代码(被调用者):
托管代码(调用者):
任何人都可以提出一些建议来改进上述代码以返回正确的答案(搜索结果)?谢谢。
automation - 如何在运行时检查两个 IAccessible 是否相同?(在 C++ 端)
如何在运行时检查两个 IAccessible 是否相同?MSAA似乎没有提供任何方法。我知道
1.我们可以检查这两个IAccessible对象的多个属性,但是搅拌cmp/string get/role get/role cmp/...可能会消耗很多时间。
2.比较这两个对象的最简单方法是比较地址,但我失败了。
任何人都可以给我一个例子或给我一个提示?非常感谢!
ui-automation - 是否存在一种搜索 IUIAutomationElement 指定名称是否包含空格的方法?
我发现如果我搜索名称包含空格的 IUIAutomationElement,FindFirst 方法会返回 nullptr,而不是正确答案。
我检查了我期望在树中返回的 target_uia 元素。
我怎样才能解决这个问题?
vb.net - 有人可以提供一个在 VB.NET 中使用 AccessibleChildren 的工作示例吗?
几个月来我一直在尝试使用 VB.Net 中的 AccessibleChildren 函数,但我无法实现......
有人可以提供一个返回有意义的 AccessibleChildren 应用程序的工作示例吗?