macos - 如何获取当前正在运行且在 Dock 中可见的所有应用程序的列表以进行 Mac OS X 编程?

标签 macos cocoa

我需要知道哪些应用程序正在运行并且有一个事件窗口。 “command + tab”热键切换器中一定有类似的内容。

当我运行这样的代码时:

NSWorkspace * ws = [NSWorkspace sharedWorkspace];
NSArray * apps = [ws runningApplications];
NSLog (@"%@", apps);

我在日志中得到了这个:

"<NSRunningApplication: 0x6080001052b0 (com.apple.loginwindow - 66)>",
"<NSRunningApplication: 0x608000105340 (com.apple.systemuiserver - 285)>",
"<NSRunningApplication: 0x6080001053d0 (com.apple.dock - 284)>",
"<NSRunningApplication: 0x608000105460 (com.apple.finder - 286)>",
"<NSRunningApplication: 0x6080001054f0 (com.apple.iTunesHelper - 339)>",
"<NSRunningApplication: 0x608000105580 (cc.omh.Clyppan - 340)>",
"<NSRunningApplication: 0x608000105610 (ws.agile.1PasswordAgent - 333)>",
"<NSRunningApplication: 0x6080001056a0 (com.irradiatedsoftware.Cinch-Direct - 342)>",
"<NSRunningApplication: 0x608000105730 (com.leapmotion.Leap-Motion - 343)>",
"<NSRunningApplication: 0x6080001057c0 (com.apple.notificationcenterui - 316)>",
"<NSRunningApplication: 0x608000105850 (com.smileonmymac.textexpander - 348)>",
"<NSRunningApplication: 0x6080001058e0 (com.lightheadsw.caffeine - 350)>",
"<NSRunningApplication: 0x608000105970 (2BUA8C4S2C.com.agilebits.onepassword4-helper - 309)>"

它显示所有正在运行的应用程序。我只想要正在运行且在 Dock 中可见的应用程序。

最佳答案

[NSWorkspace runningApplications] 返回的数组成员的类型为 NSRunningApplication。您想要选出 activationPolicy 属性的类型为 NSApplicationActivationPolicyRegular 的那些。

关于macos - 如何获取当前正在运行且在 Dock 中可见的所有应用程序的列表以进行 Mac OS X 编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20054662/

相关文章:

macos - NSOpenPanel 总是尝试在单击时重命名文件

macos - 在 MAC 上找不到“nanomsg/nn.h”文件

macos - 在系统级别的 Mac OS X Lion 上修改传出的 HTTP header

macos - Mac 上的 Docker 正在运行但拒绝暴露端口

objective-c - 将使用 colorWithPatternImage 创建的 NSColor 转换为 CGColor?

iphone - 将 PDF 从 NSData 存储到 iphone 手机库

objective-c - 重命名 NSString 常量

objective-c - 从两个指针数组中检索关系

python - 使用 nix 正确设置全局 python 环境

python - 没有名为 'geopy' 但在终端中工作的模块