【发布时间】:2014-07-28 11:08:40
【问题描述】:
如何在 swift 中获取当前屏幕上所有窗口的列表? (所有例子前面都有import Cocoa)
在objective-c中我可以成功运行以下代码:
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
但是当我在 swift 中运行等效程序时(使用操场进行测试):
let windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kcGNullWindowID)
我收到一条错误消息,告诉我我有一个Use of unresolved identifier 'kcGNullWindowID'。
在quartz documentation 的帮助下玩了一段时间后,我得到了:
let windowList = CGWindowListCopyWindowInfo(CGWindowListOption(kCGWindowListOptionOnScreenOnly), CGWindowListOption(0))
但它仍然不起作用,因为我收到了一个 {__NSArrayM} 对象,我不知道如何访问它。
我是在正确的轨道上还是在做一些根本错误的事情?
【问题讨论】:
-
这是一个 NSMutableArray。
-
objc版本
CGWindowListCopyWindowInfo线程安全吗?还是必须从主线程运行?
标签: objective-c cocoa quartz-graphics swift