windows - Carbon Accessibility API - 跨空间获取窗口信息

标签 windows cocoa accessibility spaces

我有以下(小)问题,我想以编程方式解决。每当我从笔记本电脑上拔下辅助显示器时,每个窗口都会移动到现在更小的分辨率下可见。当我重新插入外接显示器时,我需要手动将窗口更换到正确位置。我每天早上都必须这样做(叹息)。

现在我决定编写一个简单的命令行程序,它可以保存每个打开的窗口的位置,并在我想恢复它们的位置时重新定位它们。

我已经设法通过使用 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/

相关文章:

php - 如何在 laravel 5.5 中运行 phpunit

macos - launchd 何时注册事件?

android - 无法在 Android 中发送辅助功能事件

javascript - Angular 7 - 生产模式 : I can't navigate through page using the tab key

windows - 我想实现一个文件资源管理器,如何读取文件的图标并显示它们?

java - 如何在 Java 中实现 Kerberos 协议(protocol)转换? (S4U2 self )

windows - 创建第三方应用程序所需的虚拟化文件系统目录

cocoa - IKImageView 中的核心动画图像发生变化?

iphone - 从资源文件夹加载超过200张图片有问题吗?

ios - 当 VoiceOver 打开时,我的 UICollectionView 没有填充任何单元格