1

我正在尝试使用 Cocoa 或 CoreFoundation 获取连接的外部显示器的名称。“名称”是指编辑显示首选项时出现在系统首选项窗口标题栏中的字符串。

我在Quartz Display ServicesNSScreen中或中找不到任何 API 。

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

CGColorSpaceRef colorSpace = CGDisplayCopyColorSpace(displayID);

我记录了我得到的色彩空间的描述:

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

在此处输入图像描述

4

1 回答 1

1

我在另一个线程中找到了解决方案(我想知道为什么我之前没有找到...)。

我将其更新为与 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;
}
于 2012-10-19T19:17:16.893 回答