Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 获取(外部)显示的名称_Objective C_Macos_Cocoa_Quartz Graphics_Core Foundation - Fatal编程技术网

Objective c 获取(外部)显示的名称

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

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

我在中或中找不到任何用于此的API

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

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颜色配置文件的名称。这不一定与当前显示名称相同。这并不是说没有其他方法可以得到它。