macos – Mac OSX获取强制退出应用程序的应用程序列表

我想知道是否有办法获得类似于强制退出应用程序列表的应用程序列表

《macos – Mac OSX获取强制退出应用程序的应用程序列表》

我不知道到目前为止我所写的内容是否能让我获得这些信息.

extension ViewController: NSTableViewDelegate {

fileprivate enum CellIdentifiers {
    static let NameCell = "cell"
}

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {

    var appName: String = ""
    var appIcon: NSImage?

    appName = applications[row].localizedName!
    appIcon = applications[row].icon

    if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "applicationCell"), owner: nil) as? NSTableCellView {

        cell.textField?.stringValue = appName
        cell.imageView?.image = appIcon ?? nil
        print("created")

        return cell
    }
    return nil
}

当我调试时,我得到了所有的进程,但我希望只获得一个应用程序列表.这是我得到的结果的一个例子:
《macos – Mac OSX获取强制退出应用程序的应用程序列表》

我们可以看到有应用程序,但也有所有进程(我不希望有).

最佳答案 您的代码没有解释您从哪里获得了application []数组,但我假设它是通过runningApplications()获得的NSRunningApplication对象数组.

如果你只想要“常规”应用程序 – 即.用户启动并出现在停靠站中的类型 – 您可能需要进行一些挖掘.

首先,检查应用程序是否具有bundleURL.常规应用程序始终在一个包中,任何没有包的进程都可以忽略.

然后,您可以使用NSBundle读取包的Info.plist文件(请参阅infoDictionary).使用此词典,您可以判断它是否是常规应用程序(CFBundlePackageType是APPL).该测试将从列表中排除服务,插件等.

您还可以通过查看它是否将LSUIElement属性设置为1来判断它是否为“背景”应用程序(未出现在Dock中的应用程序).

这应该将列表缩小到用户通常会与之交互的应用程序.

点赞