2012-05-06 5 views
4

MacBookに外付けモニターが接続されている場合、MacBook画面はどのように取得されますか?NSScreen内蔵のMacBook画面を取得

どちらの画面でも、メニューバーとドックがある画面になる可能性があります。彼らはまた、同じ解像度、同じ名前などを持つことができます。

MacBookの画面を除くすべての画面のプラグを抜かないようにユーザーに要求せずにそれを判断することは可能ですか?

答えて

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++; 
} 
関連する問題