Objective c 获取(外部)显示的名称
我正在尝试获取与Cocoa或CoreFoundation连接的外部显示器的名称。“name”是指编辑显示首选项时出现在系统首选项窗口标题栏中的字符串 我在中或中找不到任何用于此的API 但是必须有一种方法,因为如果我像这样访问显示器的颜色空间:Objective c 获取(外部)显示的名称,objective-c,macos,cocoa,quartz-graphics,core-foundation,Objective C,Macos,Cocoa,Quartz Graphics,Core Foundation,我正在尝试获取与Cocoa或CoreFoundation连接的外部显示器的名称。“name”是指编辑显示首选项时出现在系统首选项窗口标题栏中的字符串 我在中或中找不到任何用于此的API 但是必须有一种方法,因为如果我像这样访问显示器的颜色空间: CGColorSpaceRef colorSpace = CGDisplayCopyColorSpace(displayID); 我记录了我得到的颜色空间的描述: <CGColorSpace 0x100113c20> (kCGColorSp
CGColorSpaceRef colorSpace = CGDisplayCopyColorSpace(displayID);
我记录了我得到的颜色空间的描述:
<CGColorSpace 0x100113c20>
(kCGColorSpaceICCBased; kCGColorSpaceModelRGB; DELL 2408WFP)
(KCGColorSpaceICCBase;kCGColorSpaceModelRGB;DELL 2408WFP)
我在一个案例中找到了一个解决方案(我想知道为什么我以前没有找到…)
我将其更新为与ARC兼容:
- (NSString *)screenNameForDisplay:(CGDirectDisplayID)displayID {
NSString *screenName = @"";
NSDictionary *deviceInfo = (__bridge NSDictionary *)IODisplayCreateInfoDictionary(CGDisplayIOServicePort(displayID), kIODisplayOnlyPreferredName);
NSDictionary *localizedNames = [deviceInfo objectForKey:[NSString stringWithUTF8String:kDisplayProductName]];
if ([localizedNames count] > 0) {
screenName = [localizedNames objectForKey:[[localizedNames allKeys] objectAtIndex:0]];
}
return screenName;
}
我在一个案例中找到了一个解决方案(我想知道为什么我以前没有发现…)
我将其更新为与ARC兼容:
- (NSString *)screenNameForDisplay:(CGDirectDisplayID)displayID {
NSString *screenName = @"";
NSDictionary *deviceInfo = (__bridge NSDictionary *)IODisplayCreateInfoDictionary(CGDisplayIOServicePort(displayID), kIODisplayOnlyPreferredName);
NSDictionary *localizedNames = [deviceInfo objectForKey:[NSString stringWithUTF8String:kDisplayProductName]];
if ([localizedNames count] > 0) {
screenName = [localizedNames objectForKey:[[localizedNames allKeys] objectAtIndex:0]];
}
return screenName;
}
我做了一些探索,你在打印颜色空间时看到的描述实际上是当前ICC颜色配置文件的名称。这不一定与当前显示名称相同。这并不是说没有其他方法可以得到它。我做了一些探索,你在打印颜色空间时看到的描述实际上是当前ICC颜色配置文件的名称。这不一定与当前显示名称相同。这并不是说没有其他方法可以得到它。