【发布时间】:2011-06-30 07:30:51
【问题描述】:
如何获取进程列表(在弹出按钮中),然后当用户选择应用程序时,我可以隐藏/杀死/最小化/退出应用程序吗?
【问题讨论】:
-
这可能是一个很长的弹出菜单。 (仪器很好地证明了这一点。)您可以考虑在表格视图中列出流程。
-
我不介意弹出代码是什么
标签: objective-c cocoa macos
如何获取进程列表(在弹出按钮中),然后当用户选择应用程序时,我可以隐藏/杀死/最小化/退出应用程序吗?
【问题讨论】:
标签: objective-c cocoa macos
-[NSWorkspace runningApplications] 将为您提供代表当前正在运行的进程的 NSRunningApplication 实例的 NSArray。我不确定是什么导致程序从该列表中排除,但它确实包括用户从 Finder 启动的任何应用程序。它还包括一些您不想弄乱的东西(Finder 本身和 loginwindow 进程),以及不露面的应用程序。
您可以使用filteredArrayWithPredicate: 过滤掉它们;您要保留的对象具有 activationPolicy 或 NSApplicationActivationPolicyRegular。
一旦数组被过滤,您可以搜索它,使用bundleIdentifier、bundleURL 或localizedName 来查找您想要的应用程序。然后将hide 或terminate 发送到NSRunningApplication 实例。
Apple 有一个用于演示所有这些的示例项目,名为 AppList。
【讨论】: