
我现在能获取所有当前打开的 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 来实现。但是我不管怎么写都不行,很奇怪。