如何在Swift中获取MacOS上打开的窗口列表?

如何在Swift中获取MacOS上打开的窗口列表?,swift,macos,Swift,Macos,实际上,我正在尝试获取所有打开窗口的列表,如下所示: let options = CGWindowListOption(arrayLiteral: .excludeDesktopElements, .optionOnScreenOnly) let windowsListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0)) let infoList = windowsListInfo as NSArray? as? [[String:

实际上,我正在尝试获取所有打开窗口的列表,如下所示:

let options = CGWindowListOption(arrayLiteral: .excludeDesktopElements, .optionOnScreenOnly)
let windowsListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
let infoList = windowsListInfo as NSArray? as? [[String: AnyObject]]

但这里的问题是,我在状态栏上也看到了
Dock
windowserver
SystemUIServer
或小部件。如何改进我的代码以避开这些元素并仅获取windows列表,如
Xcode
Finder
,等等?

似乎所有可见窗口的键
kCGWindowLayer的值都是
0

import Cocoa

let options = CGWindowListOption(arrayLiteral: .excludeDesktopElements, .optionOnScreenOnly)
let windowsListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
let infoList = windowsListInfo as! [[String:Any]]
let visibleWindows = infoList.filter{ $0["kCGWindowLayer"] as! Int == 0 }

print(visibleWindows)
public static func visibleWindows() -> [NSWindow]
{
    return NSApplication.shared.windows.filter { $0.isVisible }
}