1

我正在 MAC 中开发,需要获取当前正在运行的所有活动应用程序的列表,我的意思是那些具有实际窗口并且用户可以看到/关闭/最小化/最大化的应用程序。

我尝试使用 NSWorkspace runningApplications 函数,但它提供了一长串应用程序(很可能它还列出了一些隐藏的应用程序),但我只需要那些具有窗口 UI 的应用程序。

我还使用以下帖子中的建议来获取 Dock 下方的窗口,如果 Dock 可见,它可以正常工作: CGWindowListCreate 生成一个非常长的窗口列表

但是,当 Dock 隐藏时,此解决方案不起作用。

有谁知道如何让 MAC 上的用户可以看到正在运行的应用程序列表?

4

2 回答 2

1

它可能会帮助你。尝试这个

for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
        NSLog(@"%@",[app localizedName]);
    }
于 2014-01-15T10:54:19.943 回答
0
#import <Foundation/Foundation.h>

void ListWindows()
{
    NSMutableArray* windows = 
         (__bridge NSMutableArray *)CGWindowListCopyWindowInfo(
                                         kCGWindowListOptionOnScreenOnly | 
                                         kCGWindowListExcludeDesktopElements, 
                                         kCGNullWindowID);

    for (NSDictionary* window in windows) {
        if([[window objectForKey:@"kCGWindowLayer" ] intValue] == 0)
        {
        NSLog(@"%@", [window objectForKey:@"kCGWindowOwnerName"]);
        }
    }

}

int main(int argc, const char * argv[])
{
  NSLog(@"Active windows:");
  ListWindows();
  return 0;
}

样本输出:

Active windows: 
Xcode 
TextEdit 
Finder
于 2015-12-22T20:06:53.453 回答