连接或移除外接显示器的通知在我的 MacBook Air 上有效,但在 MacBook Pro 上不可用

问题描述 投票:0回答:0

我需要在我用 C++ 编写的启动代理中连接外部显示器或从 Mac 移除外部显示器时收到通知。我为此使用

CGDisplayRegisterReconfigurationCallback
,类似于我在下面显示的内容:

#include <CoreFoundation/CoreFoundation.h>

extern "C" Boolean NSApplicationLoad(void);


void _callbackDisplayReconfig(CGDirectDisplayID display,
                              CGDisplayChangeSummaryFlags flags,
                              void *userInfo)
{
    printf("DisplayReconfig received!\n");
}

int main()
{
    CGError resInit =
            CGDisplayRegisterReconfigurationCallback(
                                                     _callbackDisplayReconfig,
                                                     NULL);

    if(resInit != kCGErrorSuccess)
    {
        return -1;
    }

    //Establish a connection to the window server
    NSApplicationLoad();

    CFRunLoopRun();

    //Cleanup
    CGDisplayRemoveReconfigurationCallback(_callbackDisplayReconfig,
                                           NULL);

    return 0;
}

上面的代码适用于我的 MacBook Air,即当我通过 HDMI 电缆插入(和拔出)外部电视时,我可以看到通知。

但是当客户在他的 MacBook Pro 上运行相同的代码时,外部显示器的通知不会出现。

我做错了什么?

附言。我们都在最新的 macOS Ventura 上进行测试。

c++ macos core-foundation xnu launch-agent
© www.soinside.com 2019 - 2024. All rights reserved.