是否可以获得正在运行的应用程序窗口的完整列表?

时间:2017-11-07 16:55:10

标签: objective-c macos cocoa nsworkspace

我正在尝试获取macOS上正在运行的应用程序列表,以便在全屏应用程序上进行特定的窗口操作。

首先,我通过[NSWorkspace sharedWorkspace].runningApplications获取所有正在运行的应用的列表,然后我使用辅助功能API来获取窗口:

AXUIElementCopyAttributeValues((__bridge AXUIElementRef) app,
                               (__bridge CFStringRef) kAXWindowsAttribute,
                               index,
                               count,
                               &values);

看起来这是要走的路,但对于拥有全屏窗口的应用,kAXWindowsAttribute为空。对于非全屏幕窗口,它可以正常工作。

1 个答案:

答案 0 :(得分:1)

Core Graphics Services API可以通过CGWindowListCopyWindowInfo()函数提供所有窗口的列表。