Macos 检查状态栏中是否存在项目?

Macos 检查状态栏中是否存在项目?,macos,cocoa,Macos,Cocoa,是否可以检查OSX上的状态栏中是否可见系统项,即蓝牙图标 以前有人试过这样做吗?文档中没有提及任何内容。活动菜单栏项目的路径列在~/Library/Preferences/com.apple.systemuiserver.plist 你可以这样检查 NSURL *userLibraryURL = [[NSFileManager defaultManager] URLForDirectory:NSLibraryDirectory inDomain:NSUserDomainMask appropri

是否可以检查OSX上的状态栏中是否可见系统项,即蓝牙图标


以前有人试过这样做吗?文档中没有提及任何内容。

活动菜单栏项目的路径列在
~/Library/Preferences/com.apple.systemuiserver.plist

你可以这样检查

NSURL *userLibraryURL = [[NSFileManager defaultManager] URLForDirectory:NSLibraryDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
NSURL *systemUIServerPreferences = [userLibraryURL URLByAppendingPathComponent:@"Preferences/com.apple.systemuiserver.plist"];
NSDictionary *data = [NSDictionary dictionaryWithContentsOfURL:systemUIServerPreferences];
BOOL bluetoothIsInMenuBar = [data[@"menuExtras"] containsObject:@"/System/Library/CoreServices/Menu Extras/Bluetooth.menu"];

NSLog(@"%d", bluetoothIsInMenuBar);
或者使用
NSPredicate

NSURL *userLibraryURL = [[NSFileManager defaultManager] URLForDirectory:NSLibraryDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
NSURL *systemUIServerPreferences = [userLibraryURL URLByAppendingPathComponent:@"Preferences/com.apple.systemuiserver.plist"];
NSDictionary *data = [NSDictionary dictionaryWithContentsOfURL:systemUIServerPreferences];
NSPredicate *bluetoothPredicate = [NSPredicate predicateWithFormat:@"SELF contains 'Bluetooth'"];
BOOL bluetoothIsInMenuBar = [[data[@"menuExtras"] filteredArrayUsingPredicate:bluetoothPredicate] count];        

NSLog(@"%d", bluetoothIsInMenuBar);