问题标签 [microsoft-accessibility]

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 投票
2 回答
4366 浏览

google-chrome - 使用 RunAs 启动 chrome 时出现“Chrome 旧窗口”

我正在尝试使用 MSAA(在 Win7 上)在 chrome 浏览器中获取地址栏并将其替换为不同的 url。当chrome正常启动时(作为登录用户),我可以通过遍历进程拥有的窗口类的UI树来使用IAccessible接口找到地址栏。但是,如果我以其他用户身份启动 chrome(通过在 Windows 中使用 RunAs),我会在浏览“RunAs”进程拥有的类时看到名称为“chrome legacy window”的窗口。如果我扫描以登录用户身份运行的进程,则窗口层次结构和其中的内容与我看到的大不相同。

虽然我可以在两个浏览器实例中看到(窗口类名)Chrome_WidgetWin_0 和 Chrome_WidgetWin_1,但只有以当前用户身份运行的实例才可以访问地址栏。关于以不同用户身份启动 chrome 时会发生什么的任何想法?是否有任何解决方法或者我应该寻找不同的技术?

0 投票
0 回答
245 浏览

winforms - 如何测试 Windows 窗体应用程序的可访问性对象?

在 WindowsForms 中,每个控件都有 AccessibilityObject。如果它是从 Control 派生的自定义控件,那么它也具有 AccessibilityObject。

如何在 Windows 窗体中测试自定义控件的可访问性对象。是否有任何测试工具可用于测试可访问性对象?

自定义可访问性对象的用途是什么以及如何在可访问性辅助工具中使用它?

0 投票
0 回答
30 浏览

ui-automation - 元素显示在 UI Autotmation 中,但不显示 MSAA

请原谅我,因为我不是这方面的专家...

我们使用 MSAA 和供应商应用程序来捕获用户访问的网页。我有一些机器无法捕获访问过的网页。这些页面是通过 MSAA 捕获的(我使用 MS 的检查实用程序来查看 UI 自动化和 MSAA)。

对于有问题的机器,元素会在 UI 自动化下展开/显示,而不是在 MSAA 视图下。简而言之,任何人都知道为什么 MSAA 在这些机器上似乎被“禁用”了?

感谢这方面的任何帮助。

0 投票
0 回答
73 浏览

c++ - 如何在 Microsoft UI 自动化中使用动态注释?

MSAA(Microsoft Active Accessibility)允许动态注释,其中可以设置控件的某些可访问性属性,而无需重新实现 MSAA 接口。具体来说server annotation(这是一种动态注释)可用于设置我们拥有其 IAccessible 接口的控件的属性。

使用UI 自动化如何实现类似的事情?(UI 自动化是 MSAA 的继承者,但有不同的做事方式。)

我有一个包含 2 列(ColA 和 colB)和几个组的列表控件的 MFC 应用程序。每个组有几个项目。项目始终在 colA 中有数据,但对于 colB,它们可能没有数据。当 colB 为空时(图像中的第 3 项), Microsoft 可访问性见解会显示这些情况下的错误。错误:"The name property of a focusable element must not be null"

带有列表控件的 MFC 对话框

使用 MSAA 服务器注释(这是一种动态注释),我可以获得每个项目的 colB 并设置名称属性,或者使其不可聚焦(两者都将消除错误)。问题是 MSAA 没有公开列表项的这个子项(colB 数据)。然而,它由 UI 自动化公开。

这意味着对于项目I am able to get IUIAutomationElement interface, but not IAccessible interface.

下图显示了AccExplorer32.exe 工具显示的层次结构。此工具使用 IAccessible 接口 (MSAA)。

AccExplorer32.exe 层次结构

下图显示了可访问性见解显示的层次结构。该工具主要使用 IUIAutomationElement 接口(MS UI Automation)。

可访问性洞察工具

我们可以看到 colB 没有在 AccExplorer32 显示的层次结构中单独公开,但它在 Accessibility 洞察力显示的层次结构中公开。

因此,对于该项目,我能够获得 IUIAutomationElement 接口,但不能获得 IAccessible 接口。由 MS 记录的服务器注释需要 IAccessible。根据 MSAA 和 MS UI 自动化(见此)都支持 MS 动态注释。因此也应该支持服务器注释。

开发人员可以使用动态注释 API 来注释 Microsoft UI 自动化属性以及 Microsoft Active Accessibility 属性

有没有办法在 UI 自动化中使用像动态注释这样的服务器注释?

我已经尝试过以下方法。

  1. 在子项的 IUIAutomationElement 上使用 QueryInterface 来获取 ILegacyIAccessibleProvider(我可以通过 GetIAccessible() 方法获得 IAccessible)。但是 QueryInterface() 失败,表明没有这样的接口。
  2. 使用 UI 自动化代理进行了探索(请参阅此)。这些用于为现有服务器增加新的属性和模式。它们不用于设置现有属性的值。

源代码:https ://github.com/lihas/WindowsAccessibilitySamples/tree/master/02MFCListControlAccessibility