2012-10-19 82 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; 
}