【问题标题】:Need to get the list of currently running applications visible to the user on MAC需要在 MAC 上获取用户可见的当前正在运行的应用程序列表
【发布时间】:2013-07-18 14:57:05
【问题描述】:

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

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

我还使用了以下帖子中的建议来获取 Dock 下方的窗口,如果 Dock 可见,它可以正常工作: CGWindowListCreate generates a hugely long list of windows

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

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

【问题讨论】:

    标签: macos window nsworkspace


    【解决方案1】:

    它可以帮助你。试试这个

    for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
            NSLog(@"%@",[app localizedName]);
        }
    

    【讨论】:

      【解决方案2】:
      #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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多