使用NSScreen获取内部macbook屏幕

时间:2012-05-06 09:42:31

标签: objective-c screen

如果我的MacBook连接了外接显示器,我该如何检索MacBook屏幕?

任何一个屏幕都可以是带有菜单栏和底座的屏幕。它们也可以具有相同的分辨率,相同的名称等。

在没有要求用户拔掉除MacBook屏幕以外的所有屏幕的情况下确定它是否可行?

1 个答案:

答案 0 :(得分:8)

您可以使用CGDisplayIsBuiltin()查看显示内容是否已内置。

示例代码:

int i = 0;
for(NSScreen* screen in [NSScreen screens]) {
    NSDictionary* screenDictionary = [screen deviceDescription];
    NSNumber* screenID = [screenDictionary objectForKey:@"NSScreenNumber"];
    CGDirectDisplayID aID = [screenID unsignedIntValue];     
    NSLog(@"Screen number %i is%@ builtin", i, CGDisplayIsBuiltin(aID)? @"": @" not");
    i++;
}