objective-c - 操作系统 : Enumerate screens while on Login Window

标签 objective-c macos

我正在尝试在登录屏幕上(使用 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/

相关文章:

objective-c - AFNetworking - 为什么它会产生一个网络请求线程?

ios - paymentQueueRestoreCompletedTransactionsFinished : vs updatedTransactions:

objective-c - cocoa block 作为强指针与复制

ios - Objective C 触摸事件锁定

java - Glassfish 在 OS X 10.5/Java 6 上挂起

java - Catalina 上的 Aptana 3 错误 - 需要旧版 Java 运行时 6

ios - 图像适合 UICollectionView 单元格

macos - 如何在没有子类化的情况下绘制 cocoa 聚焦环?

objective-c - 更改 -observeValueForKeyPath :ofObject:change:context: 中的属性时,Cocoa 绑定(bind)不起作用

objective-c - 有什么简单的方法可以获取 "resize"NSBezierPath 吗?