我正在尝试使用Cocoa或CoreFoundation获取连接的外部显示器的名称。 “name”是指编辑“显示首选项”时出现在“系统偏好设置”窗口标题栏中的字符串。
我在NSScreen
或Quartz Display Services中找不到任何API。
但必须有办法,因为如果我像这样访问显示器的颜色空间:
CGColorSpaceRef colorSpace = CGDisplayCopyColorSpace(displayID);
我记录了颜色空间的描述:
<CGColorSpace 0x100113c20>
(kCGColorSpaceICCBased; kCGColorSpaceModelRGB; DELL 2408WFP)
答案 0 :(得分:1)
我在other thread中找到了一个解决方案(我想知道为什么我之前没有找到...)。
我将其更新为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;
}