如何检测Mac上外接显示器的连接和断开连接?

jak*_*ler 3 cocoa objective-c

您是否知道如何检测Cocoa应用程序中插入/拔出的其他屏幕?

我想检测用户将另一个屏幕插入或拔出Mac的时刻.我怎么能这样做?

ilu*_*pra 5

你的答案在于Quartz.

#include <ApplicationServices/ApplicationServices.h>

CGError CGDisplayRegisterReconfigurationCallback (
    CGDisplayReconfigurationCallBack proc,
    void *userInfo
);
Run Code Online (Sandbox Code Playgroud)

然后你的proc看起来像:

 MyCGDisplayReconfigurationCallBack(
    CGDirectDisplayID display,
    CGDisplayChangeSummaryFlags flags,
    void *userInfo) {

    if (flags & kCGDisplayAddFlag || flags & kCGDisplayRemoveFlag) {
        DoStuff(display, flags, userInfo);
    }
}
Run Code Online (Sandbox Code Playgroud)