繁体   English   中英

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

[英]How to get the list of open windows on MacOS in Swift?

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

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

但这里的问题是我还在状态栏上收到了DockWindow ServerSystemUIServer或小部件。 如何改进我的代码以避免这些元素并仅获取 windows 列表,如XcodeFinder等?

似乎所有可见窗口的键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 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM