我有以下(次要)问题,我想以编程方式解决。每当我从笔记本电脑上拔下辅助显示器时,每个窗口都会移动到现在更小的分辨率下可见。当我重新插入外接显示器时,我需要手动将窗户更换到正确的位置。我每天早上都必须这样做(叹气)。
现在我决定编写一个简单的命令行程序,它可以保存每个打开窗口的位置,并在我想恢复它们的位置时重新定位它们。
通过使用可访问性 API,我已经成功地完成了一些工作,它允许我控制不属于我的进程空间的窗口。但是我有一个问题:程序只能看到我当前空间中的窗口(我在这里谈论的是 OSX Spaces 功能)。
换句话说,当我运行我的程序来保存窗口位置时,它只能保存我当前所在空间中的窗口位置。
关于我的程序的更多细节:
- 它遍历所有正在运行的进程并获取它们的 PID。
- 它从这些 PID 创建应用程序元素 (
AXUIElementCreateApplication
) - 它获取与此应用程序关联的窗口,然后是它们的位置
从应用程序元素获取 windows 元素时,AXUIElementCopyAttributeValues
只返回当前空间的窗口。
现在,有没有办法控制任何窗口(跨不同的空间)?如果不是,我不介意以编程方式更改空间来获取每个窗口,但这似乎是不可能的。
任何帮助,将不胜感激!