代码之家  ›  专栏  ›  技术社区  ›  0xced

获取按上次使用顺序排列的正在运行的应用程序列表

  •  16
  • 0xced  · 技术社区  · 17 年前

    即,如果我使用 文本编辑 预览 同步 ,顺序是

    1. 同步
    2. 预览
    3. 文本编辑

    使用 [[NSWorkspace sharedWorkspace] launchedApplications] 不起作用,因为应用程序是按启动日期/进程id排序的。使用枚举 GetNextProcess 也不起作用,因为它也是由pid命令的。

    注册通知并自己维护列表不是一种选择,因为我必须在应用程序启动后立即知道列表。好吧,列表中的第一个元素实际上就足够了,但我认为这几乎是同一个问题。

    是否有一些API可以获得这些信息?

    4 回复  |  直到 17 年前
        1
  •  19
  •   alexwlchan nst    13 年前

    也许是这样的:

    cd /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework
    nm LaunchServices | grep __LSCopyApplicationArrayInFrontToBackOrder
    
        2
  •  4
  •   0xced    7 年前

        3
  •  3
  •   Saurabh Sharan Saurabh Sharan    17 年前

    您需要注册活动应用程序更改时的通知,如下所述: http://www.unsanity.org/archives/000045.php

        4
  •  1
  •   Peter Hosey    17 年前

    尝试使用辅助功能或CGWindowList API枚举窗口列表。应用程序不是Mac OS X上的窗口,我相信你知道,但应用程序的前后顺序应该由其最前面窗口的前后顺序决定。

    当然,您需要忽略已经从中看到窗口的进程(也就是说,只考虑它们最前面的窗口)。