How can I get a list of all windows, currently on the screen, in swift? (all examples are preceded by import Cocoa
)
In objective-c I can run the following code successfully:
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
But when I run the equivalent in swift(using the playground to test):
let windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kcGNullWindowID)
I get an error telling me that I have an Use of unresolved identifier 'kcGNullWindowID'
.
After playing around with the help of the quartz documentation for a while I have gotten to:
let windowList = CGWindowListCopyWindowInfo(CGWindowListOption(kCGWindowListOptionOnScreenOnly), CGWindowListOption(0))
But it still does not work as I am receiving a {__NSArrayM}
object, which I do not know how to access.
Am I on the right track or am I doing something fundamentally wrong?
Here's an example in Swift 2.0, which also demonstrates multiple options.
let options = CGWindowListOption(arrayLiteral: CGWindowListOption.ExcludeDesktopElements, CGWindowListOption.OptionOnScreenOnly)
let windowListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
let infoList = windowListInfo as NSArray? as? [[String: AnyObject]]