Macos 用于访问Mac OS X中UI元素的API

Macos 用于访问Mac OS X中UI元素的API,macos,accessibility,Macos,Accessibility,我们正在开发一个应用程序,帮助有阅读障碍的人。用户可以将鼠标光标悬停在应用程序上,让应用程序大声读出屏幕上的任何文本(菜单、按钮标签、窗口标题等)(我知道许多操作系统已经可以这样做了,但这是一个教学工具,我们正在做一些额外的工作)。我们有一个适用于Windows的应用程序,现在我们想在OS X中做一些类似的事情。基本上,我们想实现一些类似于OS X的VoiceOver功能的东西。我的问题是,是否有一个API可以用来访问OS X中的UI元素(如Microsoft Active Accessibil

我们正在开发一个应用程序,帮助有阅读障碍的人。用户可以将鼠标光标悬停在应用程序上,让应用程序大声读出屏幕上的任何文本(菜单、按钮标签、窗口标题等)(我知道许多操作系统已经可以这样做了,但这是一个教学工具,我们正在做一些额外的工作)。我们有一个适用于Windows的应用程序,现在我们想在OS X中做一些类似的事情。基本上,我们想实现一些类似于OS X的VoiceOver功能的东西。我的问题是,是否有一个API可以用来访问OS X中的UI元素(如Microsoft Active Accessibility for Windows)。我一直在阅读有关MacOSX可访问性的文章,但这似乎更像是一个API,用于在您自己的应用程序中启用可访问性,而不是从操作系统(或其他应用程序)访问元素。我错了吗?

可访问性还允许您访问其他应用程序的UI元素。查看苹果网站上的。它非常接近您想要做的事情。

是的,它被称为可访问性API。这里有很好的记录:


Thanx,这正是我想要的。但是如果我理解正确,我只能使用这个API从Cocoa(和Carbon)应用程序中提取数据,因为信息是由框架提供的,而不是由操作系统本身提供的。这是否意味着我无法从与Cocoa无关的应用程序(例如Java应用程序)中获得任何信息?@NobleK:我真的不知道。我不会每天与很多GUI Java应用程序交互。我怀疑它可能会起作用,因为苹果创建了自己的定制JVM fork,主要是为了更好地集成到操作系统中。无论如何,系统GUI框架非常接近于操作系统。Java是我能想到的唯一一种可能不会通过Cocoa实现的主要应用程序。所有的跨平台窗口工具包都在Mac上通过Cocoa或Carbon。制作图形应用程序实际上没有一种实用的较低级别的方法。在Windows Swing应用程序上,基本上看起来是黑匣子,您无法使用Windows的UIAutomation API(用于Windows的辅助功能API的更新版本)检查组件。如果您有任何关于swing应用程序和可访问性API的信息,我很想听听。作为使用SWT和JFace的退步,它通常使用本机控件,因此对可访问性API是可视的。您的第一个链接现在是404。修复了旧链接。看起来10.10引入了一个新的API,所以文档发生了变化。