1

CocoaまたはCoreFoundationで接続された外部ディスプレイの名前を取得しようとしています。「名前」とは、表示設定を編集するときに[システム環境設定]ウィンドウのタイトルバーに表示される文字列を意味します。

NSScreenQuartzDisplayServices内またはQuartzDisplayServices内にそのための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 に答える