我现在能获取所有当前打开的 window ,使用如下代码:
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 }
我观察到,所有 window 用的是同一个 Pid,但是有不同的 kCGWindowNumber
["kCGWindowSharingState": 0, "kCGWindowLayer": 0, "kCGWindowNumber": 34257, "kCGWindowOwnerName": 访达, "kCGWindowAlpha": 1, "kCGWindowOwnerPID": 584, "kCGWindowMemoryUsage": 2288, "kCGWindowStoreType": 1, "kCGWindowIsOnscreen": 1, "kCGWindowBounds": {
Height = 910;
Width = 957;
X = 555;
Y = 38;
}]
比如说我 vscode 打开了两个窗口,一个 window 写前端,一个写后端。swift 现在有没有哪个 api 可以指定打开某个 window?
查了一个早上,也看到很多人有相同的问题,都没有得到答案。
类似这样的提问有很多,就是几乎都没有答案。 https://stackoverflow.com/questions/47152551/activate-a-window-using-its-window-id
第一天学 osx 开发,关于这一点搜了一天资料也没有找到答案。求教各位了。
有人跟我说可以试试 applescript 来实现。但是我不管怎么写都不行,很奇怪。