2011-08-03 35 views
6

使用NSAccessibility API的可可应用程序需要“启用辅助设备访问”才能在通用访问预设窗格中进行检查。我看到许多应用程序弹出警告,如果它们在运行时被禁用。我如何以编程方式检查是否已启用,这样我可以在我的应用程序中显示警告?以可编程方式确定是否在Cocoa应用程序中检查“启用辅助设备访问”

+0

一旦你能够检测到设置已经开启,你如何开始使用辅助访问?需要重新启动应用程序吗? – cksubs

+0

在这里问这个问题,看起来像你需要重新启动:http://stackoverflow.com/questions/9132845/how-do-i-give-my-app-assistive-access-privileges-once-enable-access- for-assis – cksubs

回答

4

我认为你正在寻找AXAPIEnabled()。可访问性API是否启用

返回:

extern Boolean AXAPIEnabled(); 

报价the docs

如果可访问性API当前已启用,则返回TRUE,否则为 FALSE。

如果可访问性API不是 启用或者调用过程不是可信的可访问性 客户端,则辅助应用程序将不起作用。用户可以通过在通用访问首选项中选中“为辅助设备启用 访问权限”来启用辅助功能API。

+0

您还应该阅读[AXIsProcessTrusted/AXMakeProcessTrusted](http://www.cocoabuilder.com/archive/cocoa/135734-axisprocesstrusted-axmakeprocesstrusted.html)讨论。你会发现你还应该检查'AXIsProcessTrusted()'。 – 0xced

+1

AXAPIEnabled()'已在OS X 10.9中弃用Mavericks – pkamb

+1

是的,对于10.9中的此功能,请参阅[此问题](http://stackoverflow.com/questions/17693408/enable-access-for-assistive-devices - 以程序为基础的10-9)及其评分最高的答案。 – zpasternack

11

在OS X 10.9小牛,AXAPIEnabled()has been deprecated

AXIsProcessTrustedWithOptions可以用来代替:

NSDictionary *options = @{(id)kAXTrustedCheckOptionPrompt: @YES}; 
BOOL accessibilityEnabled = AXIsProcessTrustedWithOptions((CFDictionaryRef)options); 

如果您在YES传为kAXTrustedCheckOptionPrompt,系统会向用户显示一个有用的小对话框,链接到系统偏好设置:

“YourApp .app想要使用辅助功能来控制此计算机。“

enter image description here

相关问题