对于OSX应用程序,如何使用Swift中的NSTask类获取用户窗口等信息?

时间:2016-06-05 20:49:08

标签: swift nstask

如果我能够更好地解释自己,了解用户是否正在运行某些特定程序,例如word或chrome等。

我会在编写代码或查找更多信息时尝试更新我的问题。

谢谢(:

1 个答案:

答案 0 :(得分:3)

您不必通过NSTask,您可以使用Cocoa的NSWorkspace来获取正在运行的应用程序列表:

import Cocoa
let apps = NSWorkspace.sharedWorkspace().runningApplications

它返回一个NSRunningApplication个对象的数组。

假设您希望在数组中运行应用程序名称:

let appsNames = apps.flatMap { $0.localizedName }

如果您想知道iTunes是否正在运行:

if appsNames.contains("iTunes") {
    // iTunes is running
}

注意,查找正在运行的应用程序的更精确方法是使用包标识符:

let bundleNames = apps.flatMap { $0.bundleIdentifier }
if bundleNames.contains("com.apple.iTunes") {
    // iTunes is running
}

如果你想知道哪个应用程序处于活动状态(窗口最前面):

let actives = apps.filter { $0.active }
if let active = actives.first {
    // "active" is the frontmost app
}