gpt4 book ai didi

objective-c - AXIsProcessTrustedWithOptions 和 NSWorkspace openURL 之间更改可访问性的区别

转载 作者:行者123 更新时间:2023-12-04 12:47:27 29 4
gpt4 key购买 nike

为了能够使用某些功能,用户需要在辅助功能面板中启用应用程序。有两种方法可以调出如下所示的页面

解决方案一

NSDictionary* options = @{static_cast<id> (kAXTrustedCheckOptionPrompt): @YES};
return AXIsProcessTrustedWithOptions(static_cast<CFDictionaryRef> (options));

方案二

NSString* urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility";
[[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString:urlString]];

与解决方案1相比,解决方案2不需要引入一次额外点击的解释对话框。这是我更喜欢使用解决方案 2 的主要原因。

但我发现有时使用解决方案 2 的系统无法识别我启用的应用程序。因为有时即使在辅助功能面板中启用了该应用程序,当我启动会产生另一个子进程的包时,标准错误输出类似“辅助设备不信任此过程”的内容。

解决方案 1 是否做了一些隐藏的技巧而解决方案 2 没有?

最佳答案

直接回答这个问题:我不知道有什么区别,但我也注意到从第一个解决方案调用 AXIsProcessTrustedWithOptions 以某种方式使我的应用程序出现在可访问性 Pane 中,而第二个解决方案则没有.魔法?也许吧。

但是有一种方法可以使用第一种解决方案,而不会出现提示用户再次单击的对话框。

解决方案 3(第 1 个的衍生):

NSDictionary* options = @{static_cast<id> (kAXTrustedCheckOptionPrompt): @NO};
return !AXIsProcessTrustedWithOptions(static_cast<CFDictionaryRef> (options));

以某种方式这样做不会导致对话框弹出;但它会触发神奇的 AXIsProcessTrustedWithOptions,这会使该应用出现在辅助功能 Pane 中。

然后您可以使用返回值来确定是否需要为用户打开 Pane 、显示一些自定义对话框或您想要的任何其他内容。

来源和更多信息:https://stackoverflow.com/a/18121292/8538394

关于objective-c - AXIsProcessTrustedWithOptions 和 NSWorkspace openURL 之间更改可访问性的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43469739/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com