【发布时间】:2017-11-07 16:55:09
【问题描述】:
我正在尝试获取 macOS 上正在运行的应用程序的列表,以便对全屏应用程序进行特定的窗口操作。
首先我通过 [NSWorkspace sharedWorkspace].runningApplications 获取所有正在运行的应用程序列表,然后我使用 Accessibility API 来获取窗口:
AXUIElementCopyAttributeValues((__bridge AXUIElementRef) app,
(__bridge CFStringRef) kAXWindowsAttribute,
index,
count,
&values);
看起来这是要走的路,但对于具有全屏窗口的应用程序,kAXWindowsAttribute 是空的。对于非全屏窗口,它工作得很好。
【问题讨论】:
-
runningApplications确实似乎包括运行全屏的应用程序(在有限的测试中)。编辑您的问题以显示您的代码并更详细地解释它出了什么问题。希望有人可以帮助你。 -
您的问题似乎与全屏窗口本身无关,而是与不同空间中的窗口有关。尝试在不同的空间中打开应用程序并运行您的代码,除非您的代码在同一空间中运行,否则您将无法获得窗口。我怀疑这与 Apple 的强烈观点有关,即不应该有(公共)编程接口来切换空间,但你必须弄清楚这一点。 HTH
标签: objective-c macos cocoa nsworkspace