【发布时间】:2017-09-14 03:34:37
【问题描述】:
为了能够使用某些功能,用户需要在辅助功能面板中启用应用程序。有两种方法可以调出如下所示的页面
解决方案 1
NSDictionary* options = @{static_cast<id> (kAXTrustedCheckOptionPrompt): @YES};
return AXIsProcessTrustedWithOptions(static_cast<CFDictionaryRef> (options));
解决方案 2
NSString* urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility";
[[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString:urlString]];
与解决方案 1 相比,解决方案 2 不需要引入额外单击的解释对话框。这是我更喜欢使用解决方案 2 的主要原因。
但我发现有时使用解决方案 2 的系统无法识别我启用的应用程序。因为有时即使在可访问性面板中启用了应用程序,当我启动会产生另一个子进程的包时,标准错误输出诸如“辅助设备不信任此过程”之类的内容。
解决方案 1 是否有一些隐藏的技巧,而解决方案 2 没有?
【问题讨论】:
标签: objective-c macos accessibility