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