我正在尝试在登录屏幕上(使用 ssh)通过 OSX 上的命令行枚举屏幕。
但是 [NSScreen screens]
和 CGGetActiveDisplays
都返回 0 屏幕。是否有另一种屏幕枚举方法?
最佳答案
预登录代理可以使用 CGGetOnlineDisplayList 枚举显示。
我使用了 here 中的示例 Apple 代码.
修改它以链接 CoreGraphics,并将以下代码添加到 applicationDidFinishLaunching
方法:
CGDirectDisplayID displays[10];
uint32_t numDisplays = 0;
CGGetOnlineDisplayList(10, displays, &numDisplays);
for(uint32_t i = 0; i < numDisplays; i++)
{
[[LogManager sharedManager] logWithFormat:@">>> Found an online display!"];
}
if(numDisplays == 0)
[[LogManager sharedManager] logWithFormat:@"<<<<< No displays!"];
根据示例中有关如何查看日志的文档,登录屏幕上打印了以下内容:
Jul 12 10:03:09 veeboxs-MacBook-Pro PreLoginAgentCocoa[3129] <Info>: Did finish launching begin
Jul 12 10:03:09 veeboxs-MacBook-Pro PreLoginAgentCocoa[3129] <Info>: Showing window with extreme prejudice
Jul 12 10:03:09 veeboxs-MacBook-Pro PreLoginAgentCocoa[3129] <Info>: Did finish launching end
Jul 12 10:03:09 veeboxs-MacBook-Pro PreLoginAgentCocoa[3129] <Info>: >>> Found an online display!
关于objective-c - 操作系统 : Enumerate screens while on Login Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821174/