我试图在登录屏幕上使用OSX通过命令行枚举屏幕(使用ssh)。
但[NSScreen screens]
和CGGetActiveDisplays
都返回0个屏幕。还有另一种屏幕枚举方法吗?
答案 0 :(得分:4)
登录前代理可以使用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!