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

objective-c - Enable access for assistive devices programmatically on 10.9

I want to enable access for assistive devices programatically on 10.9. On 10.8 and lower I was using following Applescript to enable access for assistive devices:

With 10.9, Apple has moved the accessibility options to System Preferences ➞ Security & Privacy ➞ Privacy ➞ Accessibility. Unlike previous versions of OS X, which used a universal checkbox for all applications, the new functionality in 10.9 allows users to individually choose which apps can gain control of the system to perform their various scripted functions.

The new system preferences regarding accessibility

Apple has NOT provided any API to developers to programmatically enable accessibility for an app. So Mac OS 10.9 will prompt a dialog for end user permission to enable Accessibility when application uses accessibility APIs. Additionally User has to Relaunch the application after enabling Accessibility.

Default prompt dialog put up by 10.9 OS for Xcode

Can we enable access for assistive devices programmatically on 10.9 using Applescript or any other APIs? Any help to fix this issue would be greatly appreciated.

0 投票
1 回答
2602 浏览

android - 在安卓上启用无障碍服务

我正在开发一个在 Android 中使用辅助功能 api 的应用程序。我在引导用户启用服务时遇到了一些问题。到目前为止,我发现的唯一一件事是:

但是,这只会将我们带到“可访问性”菜单。我想自动化所需的步骤。目前,启用的步骤(退出我的应用程序后)是:

  1. 用户被带到设置
  2. 用户点击我的无障碍服务
  3. 用户点击 ON 开关
  4. 用户点击后退按钮(返回主要可访问性)
  5. 用户点击后退按钮(返回应用程序)

我想减少这种情况,以便我直接将他/她带到可以看到辅助功能切换按钮的屏幕

所以它会像

  1. 用户点击 ON 开关
  2. 用户点击后退按钮(返回我的应用程序)

知道如何直接执行此操作,而无需访问主要的可访问性服务吗?

0 投票
1 回答
212 浏览

objective-c - Cocoa iTunes ScriptingBridge - How to play playlist shuffled / unshuffled playlist?

I see there is a property shuffle but it doesn't seem to do anything (it still plays shuffled).

I tried this but it plays shuffled. I'd like it unshuffled. Is this not possible?

0 投票
1 回答
6509 浏览

objective-c - 使用 Accessibility API 在 Mac OS X 上移动其他窗口

我正在尝试使用 Accessibility API 来更改其他应用程序窗口的位置。我想做的是从所有应用程序中获取屏幕上的所有窗口,然后将它们全部移动给定的偏移量(比如说 5 或 10或任何值)。我很难做到这一点,因为这是我在 Objective-C 编程的第一天。

这就是我现在正在做的事情。首先,我使用CGWindowListCopyWindowInfo. 然后,对于我AXUIElementCreateApplication用来获取窗口的每个AXUIElementRef窗口。之后,我应该AXUIElementCopyAttributeValue与属性一起使用kAXPositionAttribute(我无法获得正确的位置,总是得到零)。最后,我应该将想要的偏移量添加到位置并AXUIElementSetAttributeValue与属性kAXPositionAttribute和新位置点一起使用(即使我设置了绝对值,例如 0,0,也会出现运行时错误)。

有人可以帮我做一个我上面描述的片段,因为我尝试了很多事情都没有运气。此外,它不应该完全像我决定在上面实现它一样。如果有更好的方法来做到这一点,那么我很乐意改变它。

更新: 根据评论中的要求,这是其中一种尝试的代码片段:

0 投票
0 回答
239 浏览

cocoa - 可可可访问性:父级不将元素报告为其子级之一

我正在为 Mac OS开发一个 UI 应用程序。Accessibility Inspector当我看到以下错误时,我只是在使用 OSX 附带的那个:

“父级不将元素报告为其子级之一”

在此处输入图像描述

我可以理解,因为我的光标位于 a 的元素上NSCollectionView

那么如何将子项“注册”为 Collection 的子项?

编辑:我还观察到一些奇怪的行为:当Accessibility Inspector打开时,每次我用光标输入我的一个子元素时,我都会收到以下消息。

DriveViewBox子类在哪里NSBox

0 投票
2 回答
704 浏览

macos - Mac App Store:规避沙盒要求

正如互联网上的许多消息来源所说,您需要将您的应用程序沙盒化才能在 App Store 中部署它。

此外,根据this ,沙盒时无法使用可访问性 api (AXUIElement.h) 。

但是,一些应用程序似乎仍然使用此 api。这些应用程序之一是 Cinch。在 Cinch 的安装过程中,您需要授予 Cinch 使用辅助功能 API 的权限,因此很明显他们正在使用此 API。

使用以下命令从应用商店签出二进制文件后:

似乎该应用程序没有被沙盒化:

(输出中的唯一行)。

所以我的问题是,如何规避这个要求。您是否需要与 Apple 谈判才能实现这一目标?有特殊规定吗?你需要贿赂员工吗?还是我的终端命令错误?

0 投票
1 回答
374 浏览

objective-c - 使用辅助功能选项在 OSX 中移动应用程序窗口

我正在尝试使用辅助功能 API 在 OSX 中移动其他应用程序。我实际上有这个工作。但是我遇到了一个大问题。

这使用我的应用程序的 PID 来稍后移动窗口。我发现多个窗口具有相同的 PID,当我尝试移动应用程序的第二个窗口时,我的应用程序崩溃了。

我可以只使用 WindowID 移动我的应用程序吗?

0 投票
0 回答
234 浏览

c++ - 如何为菜单选项提供可访问性支持(来自 QMenu 的 QAction)

我有问题。我似乎无法让屏幕阅读器告诉快捷键以及 QMenu 中包含的 QAction 的选项名称。例如,我希望屏幕阅读器告诉我“打开... Ctrl+O”,而不是“打开...”。

在我看来,问题在于屏幕阅读器只能看到 QAction::text() 属性。所以如果我做这样的事情:

我得到这样的东西:(对不起,但我需要至少 10 个声望才能发布图片)

|档案|

|打开Ctrl+O|

屏幕阅读器告诉我文件“文件菜单 Alt+F”,但打开选项只是“打开”。

如果我尝试做类似的事情:

我得到这样的东西:

|档案|

|打开 Ctrl+O Ctrl+O|

屏幕阅读器现在告诉我“打开 Ctrl+O”,但正如您所见,它复制了快捷方式的字符串。

到目前为止我已经尝试过:设置我可以看到的所有属性(例如 QAction::setWhatsThis、QAction::setIconText 等)

我找到了一个可以使用的小技巧;我可以做类似的事情:

但这从文本的顶部(“打开”)减少了一点。因此,一种对齐文本的方法,以便在我使用此 hack 时不会被剪切。

我愿意接受任何建议。我认为有办法使用 statusBar 来做到这一点,但我不知道怎么做。我希望我说清楚了...谢谢您的帮助!

0 投票
1 回答
272 浏览

macos - Mac App Store:沙盒化应用程序是强制性的吗?

我需要在没有沙盒的情况下分发我的应用程序,因为我需要可访问性 API。有谁知道如果我在没有打开沙盒的情况下提交应用程序是否会被拒绝(有充分的理由)?

在 Mac App Store 指南中它写道:

未适当沙盒化的应用程序可能会被拒绝

你对这种说法有何经验?“可能”还是“将会”?

0 投票
0 回答
249 浏览

objective-c - 在 OSX 中获取最前面的应用程序的活动文件

是否有机会通过 NSWorkspace、Accessibility API、Applescript 等在 Objective-C 中获取最前端应用程序的活动文件(假设该应用程序已打开文件)?