AppleScript太慢,所以我尝试使用ScriptingBridge打开System Preferences.app并设置当前窗格,这也太慢了。有更快的方法吗?适当
答案 0 :(得分:8)
比使用文件系统路径更直接的方法是使用NSWorkspace的首选项窗格的相应资源URL,如下所示:
library("sandwich")
library("lmtest")
coeftest(mult_fe)
其中NSString *urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility";
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
取自某些可能的网址字符串列表https://macosxautomation.com/system-prefs-links.html
答案 1 :(得分:5)
没有脑子:
system("open -a System\\ Preferences");
选择要打开哪个窗格:
open /System/Library/PreferencePanes/Internet.prefPane
open /System/Library/PreferencePanes/DateAndTime.prefPane
...
如果您在/System/Library/PreferencePanes/
首先找到正确的文件,只需稍加试错即可找到。
我确信有更多可可方式来做最后一招,仍然......这个适用于所有语言。
另外:您可能想要检查这些路径
/Library/PreferencePanes/ ~/Library/PreferencePanes/
...因为这是第三方应用安装他们的
的地方*.prefPane
文件
答案 2 :(得分:5)
使用Launch Services或NSWorkspace打开prefpane包。这是open(1)命令的编程版本。
答案 3 :(得分:0)
您是如何使用脚本桥的?
我尝试使用此代码,我认为它的表现相当不错:
SystemPreferencesApplication *SystemPreferences = [SBApplication applicationWithBundleIdentifier:@"com.apple.systempreferences"];
@try {
[SystemPreferences activate];
SystemPreferences.currentPane = [SystemPreferences.panes objectWithID:@"com.apple.preference.security"];
} @catch (NSException *exception) {
NSLog(@"%@", [exception description]);
}
这是另一个有趣的选择,它是Cocoa,但根本没有记录(并且仅适用于系统首选项窗格)。您可以使用它来比较性能,但不要在生产代码中使用它。
id bezelServicesTask = [NSConnection rootProxyForConnectionWithRegisteredName:@"com.apple.BezelServices" host:nil];
[bezelServicesTask performSelector:@selector(launchSystemPreferences:) withObject:@"Security.prefPane"];