Swift 如何打开某个指定的 window?

2023-01-13 21:57:29 +08:00
 covvee

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

929 次点击
所在节点    Swift
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908798

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX