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

macos - Cocoa:识别正在拖动的内容 onMouseDrag

有没有办法确定在 onMouseDrag 事件期间拖动了什么?具体来说,我想知道是否正在拖动窗口。

我尝试了以下方法: Accessibility API:存储活动窗口的初始位置,在拖动和比较值期间再次查询窗口位置。这种方法的问题是 Accessibility API 不会更新窗口的位置,直到鼠标停止移动(仍然按下主鼠标按钮)。当鼠标在短暂停止后再次开始拖动时,它会提供更新的位置。

将 NSWindowDelegate 附加到活动窗口:我对此很陌生,所以我不知道找到焦点/活动窗口的 NSWindow 的方法。

提前致谢!

更新:我使用 Accessibility API 获取活动窗口并附加 AXObserverRef 以获取 kAXMovedNotification。我使用 CFRunLoopAddSource 将此观察者添加到运行循环中。结果是通知的回调排队并仅在我停止拖动窗口时触发多次调用。有没有办法让回调立即触发而不像这样排队,这样我就可以在拖动窗口时运行一些代码,而不是在拖动停止时运行一些代码?

0 投票
0 回答
1007 浏览

macos - CFRunLoopAddSource:运行模式立即执行

我正在尝试将观察者添加到活动窗口(可以是任何程序,而不仅仅是我的),以便它告诉我它是否正在移动。以下是我将观察者添加到运行循环的方法:

与观察者关联的回调当前只是在输出窗口中打印一些内容。我观察到的是,当我在活动窗口(同样,这可能是任何应用程序的窗口)周围拖动时,没有任何输出,但是一旦我停止,就会输出多个 printf 结果。似乎对回调的调用排队,直到有一些空闲时间让它一次执行。

有没有办法在不等待空闲时间的情况下执行回调?也许一个 CFRunLoopMode 可以做到这一点?

0 投票
2 回答
1034 浏览

java - 在外部 Java GUI 中跟踪事件

有没有办法从外部 Java 桌面应用程序中检索事件信息和 UI 元素数据?具体来说,我需要记录特定文本框的值何时发生变化并从其他几个输入元素中检索数据。

这是针对客户的概念验证项目(不是恶意软件;-))。

Java 应用程序已存在,无法添加或重新编译。可以使用 .NET 或 Java 构建“监听”应用程序。我发现了一些关于 Windows 事件挂钩和 Java Accessibility API 的有限信息,但遇到了障碍,主要是因为我缺乏知识。

我不知道这是否容易做到 - 想法表示赞赏。

0 投票
0 回答
206 浏览

python - 用于 Active Accessibility Windows 8 的 Python 绑定?

我不得不在 Windows 7 上重新调整和重新构建 pyAA(Microsoft Active Accessibility 的 Python 绑定),现在看来我必须将它迁移到 Windows 8。我希望我不必重新编译再次绑定!

有人知道 Windows 版本 8 的 Windows 版本之间的 Microsoft Active Accessibility 是否存在很大差异(从开发人员的角度来看)?

提前致谢!

0 投票
1 回答
425 浏览

objective-c - 观察 AXUIelement 的孩子变化?

如果对于特定的父 AXUI 元素,它的任何子元素发生更改(属性)或添加/删除子元素,是否可以接收通知?

0 投票
1 回答
420 浏览

objective-c - AXWindowMoved(通过 AXObserver) - 持续更新?

是否有任何其他方法可用于获取持续更新,而不是 kAXWindowMovedNotification(可访问性 api - 通过 AXObserver 侦听),它发送通知的时间比拖动开始时要晚得多?如果可能的话,我需要不断更新。

或者是否有任何替代方法来检测窗口移动(在另一个应用程序中)?实际上我只需要准确的拖动开始和结束时间。在这之间,我真的不在乎。kAXWindowMovedNotification 报告开始时间太晚。

0 投票
1 回答
980 浏览

objective-c - 在应用程序准备好使用(启动)之前调用 NSWorkspaceDidActivateApplicationNotification

我同时使用 NSWorkspaceDidActivateApplicationNotification 和 NSWorkspaceDidLaunchApplicationNotification 通知来了解用户正在与哪个应用程序进行交互。

问题是,如果一个应用程序刚刚打开并仍在启动,我首先会收到一个激活通知,然后很快就会收到启动通知。

有没有办法在激活方法中知道应用程序仍在启动但尚未准备好使用?(仍在码头弹跳)

我看到苹果的 ichat 示例项目没有使用上述方法,而是只监听启动通知。然后它使用 kAXApplicationActivatedNotification 将 AXObserver 添加到应用程序。这是首选方式吗?(还有 NSRunningApplications 为所有已加载的应用程序添加观察者)。

我想继续使用简单的 NSNotifications,因为我认为它可能会占用更少的内存。(无需为每个加载的应用程序留一个观察者)。

0 投票
1 回答
302 浏览

objective-c - AXObserverCallback 元素参考

我有一个这样注册的 AXObserver:

这是回调方法:

这就是我添加通知的方式:

我注意到的是添加到观察者(用于通知)(在上述情况下为“app”)的元素似乎与观察者回调中的一组元素(“elementRef”)不对应。好像是副本?至少我无法将它们与 == 进行比较,如果我 NSLog 它们显示不同的地址。

有没有办法比较作为副本的 AXUIElementRefs?(这是返回副本而不是原件的正常行为吗?)

0 投票
1 回答
1381 浏览

macos - 如何在 Mac OS X 的辅助功能 API 中获取当前键盘焦点坐标?

我正在寻找一个 Mac OS X Accessibility API 来获取当前键盘(不是鼠标)焦点位置的坐标。根据我在http://www.apple.com/accessibility/pdf/Mac_OS_X_Tiger_vpat.pdf找到的文档的第 2 页,这是可行的:

支持:Mac OS X 通过辅助功能 API 向辅助技术公开当前键盘和鼠标焦点的位置,并在屏幕上提供焦点的视觉指示。

尽管有上述声明,但我似乎无法找到 API 本身。我是一名经验丰富的开发人员(从 1982 年开始编码),但从未在 Mac OS X 上开发过;请温柔一点。

0 投票
2 回答
1327 浏览

android - 无障碍服务的“onAccessibilityEvent”功能未被调用

我正在开发的应用程序遇到了一个相当不幸的问题,该应用程序利用可访问性服务在通知到达用户设备时对通知进行一些特殊处理。问题是,它工作得很好,但服务的“onAccessibilityEvent”功能永远不会被调用,除非服务从 Android 的辅助功能页面重新启动,即我必须首先从该页面启用服务,然后禁用它,然后再按顺序启用它完全调用“onAccessibilityEvent”。

我已经尝试使用Google 的示例而不进行任何更改,但即便如此,我似乎仍然遇到同样的问题,所以我不确定这里发生了什么。有没有人遇到过这个问题?