我正在尝试使用以root身份运行的守护程序捕获Mac上的屏幕。
代码看起来像这样:
activeDisplayID = CGMainDisplayID();
CGImageRef image = CGDisplayCreateImage(activeDisplayID);
我运作良好但是当我切换到另一个用户时,我继续获得前一个用户的屏幕 - 它还活着,所以Apple似乎有更高的含义。
对于某些用例,这将是完美的,但我想捕获实际显示在显示器上的屏幕。
当新用户登录时,从CGMainDisplayID()返回的显示ID会发生变化,但在创建图像时,我会看到第一个用户的屏幕!?
我必须停止守护进程并再次启动它以从其他用户获取屏幕。似乎Mac OS缓存了第一个显示访问并继续将其提供给守护进程。
有没有办法为此行为重置此方法或其他一些解决方法?