我有以下(小)问题,我想以编程方式解决。每当我从笔记本电脑上拔下辅助显示器时,每个窗口都会移动到现在更小的分辨率下可见。当我重新插入外接显示器时,我需要手动将窗口更换到正确位置。我每天早上都必须这样做(叹息)。
现在我决定编写一个简单的命令行程序,它可以保存每个打开的窗口的位置,并在我想恢复它们的位置时重新定位它们。
我已经设法通过使用 Accessibility API 来做一些工作得很好的事情,它允许我控制不属于我的进程空间的窗口。但我有一个问题:该程序只能看到我当前空间中的窗口(我在这里谈论的是 OSX Spaces 功能)。
换句话说,当我运行我的程序来保存窗口位置时,它只能保存我当前所在空间的窗口位置。
关于我的程序的更多细节:
- 它遍历所有正在运行的进程并获取它们的 PID。
- 它根据这些 PID 创建应用程序元素 (
AXUIElementCreateApplication
) - 它获取与此应用程序关联的窗口,然后是它们的位置
从应用程序元素获取窗口元素时,AXUIElementCopyAttributeValues
只返回当前空间的窗口。
现在,有没有办法控制任何窗口(跨不同空间)?如果没有,我不介意以编程方式更改空间以获取每个窗口,但这似乎不可能。
如有任何帮助,我们将不胜感激!
最佳答案
我不知道切换空格的记录方式。
你可能想要 CGSPrivate.h - CGSSetWorkspace
等。请记住,这些函数是 SPI,即使在 10.6.x 版本中也可能在没有警告的情况下中断。
关于windows - Carbon Accessibility API - 跨空间获取窗口信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2676158/