NSWorkspace().runningApplications
为我提供了所有正在运行的应用程序的完整列表,但我想过滤掉用户专门启动的应用程序。我怎样才能做到这一点?
答案 0 :(得分:3)
我认为这些方面的内容可以帮助你:
let apps = NSWorkspace().runningApplications
for app in apps {
print("URL: \(app.executableURL!) App name: \(app.localizedName!)")
switch app.activationPolicy! {
case NSApplicationActivationPolicy.Regular:
println(" Normal app ")
case NSApplicationActivationPolicy.Accessory:
println(" Accessory app")
case NSApplicationActivationPolicy.Prohibited:
println(" backgound app")
default:
println("unknown")
}
}
只需查看常规应用
即可 注意:虽然对于没有充分接触函数式编程的人来说,我的答案可能更清晰,Leonardo's answer更简洁,并展示了如何使用map
& filter
答案 1 :(得分:3)
跟进迭戈的回答,您可以结合使用过滤器和地图来完成您想要的任务。您可以使用activationPolicy过滤您的数组,最重要的是您可以映射结果以提取常规运行应用的名称。
let regularApps = NSWorkspace().runningApplications.filter{$0.activationPolicy == NSApplicationActivationPolicy.Regular}.map{$0.localizedName!!}
println(regularApps.description) // "[Finder, Mail, Messages, Preview, Skype, iOS Simulator, iTunes, Photos, Safari, TextEdit, iBooks, System Preferences, QuickTime Player, App Store, Disk Speed Test, Xcode]"