2012-10-19 84 views
1

我试图获取与Cocoa或CoreFoundation连接的外部显示器的名称。对于“名称”,我是指在编辑显示偏好设置时出现在系统偏好设置窗口的标题栏中的字符串。获取(外部)显示器的名称

我在NSScreenQuartz Display Services中找不到任何API。

但是,必须有一种方式,因为如果我访问了显示器的色彩空间是这样的:

CGColorSpaceRef colorSpace = CGDisplayCopyColorSpace(displayID); 

我日志色彩空间的描述,我得到:

<CGColorSpace 0x100113c20> 
(kCGColorSpaceICCBased; kCGColorSpaceModelRGB; DELL 2408WFP) 

enter image description here

+1

我做了一些闲逛,当你打印色彩空间实际上是当前的ICC色彩配置文件的名称说明你看到的。这不一定与当前的显示名称相同。这并不是说没有其他办法可以得到它。 –

回答

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; 
}