问题标签 [accessibility-api]

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 投票
4 回答
11349 浏览

cocoa - 如何使用 Cocoa 的 Accessibility API 来检测窗口是否被置于前面?

我正在使用辅助功能 API 来检测某个应用程序何时打开窗口、关闭窗口、何时移动或调整窗口大小,或者何时成为主窗口和/或焦点窗口。但是,客户端应用程序似乎将一个窗口移到了前面,而没有触发 Accessibility API 通知。

我的应用程序如何检测另一个应用程序何时将一个窗口置于前面而不使其成为关键?

我希望找到适用于 OS X 10.4 和 10.5 的解决方案

更多信息:我目前正在使用这些语句。当用户手动选择一个窗口将其置于前面时,它们可以正常工作。但是当应用程序本身将窗口带到前面时,它就不起作用了。

0 投票
1 回答
1858 浏览

cocoa - Cocoa 可访问性 API,我可以在后台单击窗口而不激活它吗?

我一直在寻找解决这个问题的方法,所以我想我会寻找比我更伟大的头脑的脑力。我正在开发一个使用 Accessibility API 来操作另一个程序的 Cocoa 应用程序(它是一个热键应用程序)。我正在控制的应用程序通常会打开多个窗口,其中一些窗口隐藏在其他窗口后面。如果可能的话,我想做的是使用 Accessibility API 将鼠标事件发送到窗口,其方式是按下窗口中的按钮而不将其置于前台(与窗口交互但不激活它) . 我试图这样做的原因是,将鼠标事件发送到另一个窗口会强制它到前台并破坏用户与最前面的窗口的交互。

这在 Windows 上是可能的 - 显然,因为类似于我的应用程序在那里执行 - 但我感觉这对于 Cocoa 是不可能的,因为窗口管理器的工作方式。我弄错了吗?

0 投票
3 回答
5472 浏览

iphone - 是否有允许我直接在我的应用程序中使用 VoiceOver 的 iPhone API?

我想让用户直接从我的应用程序中按下一个按钮,并使用 VoiceOver 阅读屏幕上的内容。现在,我唯一的选择是捆绑每个页面的录音,并在用户按下按钮时播放它们。VoiceOver 将真正简化这个过程。是否可以?

谢谢!
托马斯

0 投票
4 回答
3792 浏览

objective-c - 以编程方式启用对辅助设备的访问

我想以编程方式在系统偏好设置中启用辅助设备的访问。但问题是我的应用程序没有以 root 用户身份运行,我不希望我的应用程序以 root 用户身份运行,也不应该在两者之间要求任何身份验证。

我想全局点击所有键盘事件。我也在使用 CGEventTapCreate()。在 CGEventTapCreate() API 的文档中提到,如果以下条件之一为真,则事件点击接收按键向上和按键向下事件:

  1. 当前进程以 root 用户身份运行。
  2. 启用辅助设备访问。在 Mac OS X v10.4 及更高版本中,您可以使用系统偏好设置、通用访问面板、键盘视图启用此功能。

我通过从系统偏好设置中检查辅助设备的启用访问来手动尝试,它给了我预期的输出。

那么有没有办法通过程序来做同样的事情而不要求身份验证并且应用程序也没有以root用户身份运行?

谢谢,

迪拉杰。

0 投票
2 回答
7758 浏览

cocoa - 如何在没有 Accessibility API 的情况下在 Mac OS 中获取另一个应用程序窗口的标题、位置和大小?

如果窗口不支持 Accessibility API,如何获取窗口的标题、位置和大小?辅助功能检查员根本看不到它。比如说,它是 X11.app 中的一个 xterm 窗口(X11->Applications->Terminal)。

0 投票
1 回答
574 浏览

macos - 使用 Accessibility API 找出 NPAPI 插件中浏览器窗口的大小和来源

我一直在为 MacOSX 中的浏览器(Safari、Chrome、firefox)制作插件

我尝试做的是使用 Accessibility API 在我的 NPAPI 插件中找出浏览器窗口的大小和来源。

在 Chrome 中,我可以得到我想要的,但在 Safari 中,得到一个错误代码-25204

-25204AXError.h中的 kAXErrorCannotComplete

但我不知道为什么。

欢迎任何意见。

提前致谢。

0 投票
8 回答
43267 浏览

android - Android:如何检查是否启用了特定的 AccessibilityService

我编写了一个需要使用AccessibilityService. 我知道如何检查是否在手机上启用或禁用了辅助功能,但我无法确定我的应用程序是否已在辅助功能菜单中特别启用。

如果没有运行,我想提示用户AccessibilityService,但找不到这样做的好方法。是否有任何我可能缺少的 API 方法可以让我知道设备上启用了哪些可访问性服务?

0 投票
2 回答
6990 浏览

objective-c - 通过 OSX Accessibility API 获取窗口编号

我正在开发一个在屏幕上移动第三方应用程序窗口的应用程序。

为了概览所有当前打开的窗口,我使用

这将返回定义每个打开窗口的字典数组。这是返回的示例字典:

该字典充满了其他地方使用的良好信息,但缺少可用于修改窗口位置的可访问性对象。窗口由窗口编号清楚地标识。

我现在使用 PID (kCGWindowOwnerPID) 为窗口的应用程序创建一个可访问性对象:

然后使用 AXUIElementCopyAttributeValues 检索应用程序已打开的所有窗口的列表:

这有效并返回一个 AXUIElements 数组。这就是我卡住的地方。似乎没有 API 调用来检索可访问性对象的窗口编号。有没有办法

a)找到可访问性对象的窗口编号(最终遍历数组并找到正确的窗口)

或者

b) 否则,将 CGWindowListCopyWindowInfo 返回的数组中描述的窗口与 AXUIElementCopyAttributeValues 返回的辅助功能对象明确匹配?

0 投票
0 回答
496 浏览

macos - Mac OSX 上滚动事件的系统范围识别并将焦点设置到不同的窗口

我正在可可应用程序中注册全局鼠标滚轮事件。我的目标是让某种后台应用程序能够在用户在其窗口中滚动时聚焦另一个应用程序的窗口。如果可能使用 Objective-C 和 Cocoa,如果我想这样做,我需要走哪条路?

我的事件注册代码如下所示:

这行得通,但是在事件中捕获的数据(如窗口或 windowid)我似乎无法操作 - 而且窗口 id 似乎甚至不是正确的,因为我可以获得一个列表窗口并在那里获得不同的 id - 只是屏幕位置似乎是准确的。所以三个问题来解决这个谜题:

  1. 如何在屏幕上的某个位置获取窗口或窗口 ID?
  2. 如果我只能得到一个窗口 id,我怎样才能找到合适的应用程序或窗口对象来操作?
  3. 我想我需要可访问性 API 来操作窗口并赋予它焦点。这是如何运作的?

也许这些都是简单的任务,但我以前从未编写过 Mac-Cocoa 应用程序。在建议阅读文档之前,您应该知道我已经扫描了所有文档,并且我通过示例学习比阅读书籍更好:-)

编辑:我刚刚发现我可能会使用 ProcessManager 将应用程序带到前面。如果您认为这是一个可能的解决方案,我可以在屏幕上的某个点获取窗口的进程 ID 吗?

EDIT2:我不想使用 Carbon API。

0 投票
0 回答
292 浏览

ios - iOS:读取 AssistiveTouch 功能的状态

我正在寻找一种方法来确定 iOS5 中“AssistiveTouch”辅助功能的状态。我需要某种功能来检查它是否已启用-有什么想法吗?到目前为止,在可访问性文档中找不到任何内容......如果还没有官方方式,无证方式也可以。更具体地说,我需要找出当前是否播放录制的手势,这就是我问的原因。

谢谢你的帮助 :-)