我需要知道哪些应用程序正在运行并且有一个活动窗口.类似的东西必须是'command + tab'热键切换器中的内容.
当我运行这样的代码时:
NSWorkspace * ws = [NSWorkspace sharedWorkspace];
NSArray * apps = [ws runningApplications];
NSLog (@"%@", apps);
Run Code Online (Sandbox Code Playgroud)
我在日志中得到这个:
"<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)>"
Run Code Online (Sandbox Code Playgroud)
它显示了所有正在运行的应用程序.我只想要在Dock中运行和可见的应用程序.
JWW*_*ker 13
返回的数组的成员[NSWorkspace runningApplications]是类型NSRunningApplication.你想挑选出activationPolicy属性类型的那些NSApplicationActivationPolicyRegular.
小智 9
以下代码使用NSWorkplace workspace.runningApplications.filter调用来提取应用程序。
// Swift 4.1
//: Playground - noun: a place where people can play
import Cocoa
let workspace = NSWorkspace.shared
let apps = workspace.runningApplications.filter{ $0.activationPolicy == .regular }
Run Code Online (Sandbox Code Playgroud)
针对Swift 3进行了更新
let ws = NSWorkspace.shared()
let apps = ws.runningApplications
for currentApp in apps
{
if(currentApp.activationPolicy == .regular){
print(currentApp.localizedName!)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3638 次 |
| 最近记录: |