首页 > 解决方案 > 如何从 Mac OS 应用程序重新启动任意应用程序

问题描述

我继承了一个 Mac OS 项目,我需要重新启动浏览器(可能还有其他应用程序/服务)。

这是我第一次使用桌面应用程序,以前的经验主要是移动设备。

我可以使用任何流程管理 Swift API 吗?或者我应该选择system()orexecv()之类的?

我认为杀死和启动其他进程将需要提升的权限。Swift 中是否有我可以用来处理密码提示的 API,或者这是我需要自己处理的事情?

标签: swiftmacos

解决方案


您可以使用 NSWorkspace 获取正在运行的应用程序。AFAIK 无法“重新启动”应用程序,但您可以终止或强制终止,然后再次打开它。

要获取正在运行的应用程序:

NSWorkspace.shared.runningApplications

终止应用程序:

runningApp.terminate()

强制终止应用程序:

runningApp.forceTerminate()

要打开正在运行的应用程序,您只需从正在运行的应用程序获取捆绑标识符,然后再次打开它

if let bundleIdentifier = runningApplications[index].bundleIdentifier {
    runningApplications[index].forceTerminate()
    NSWorkspace.shared.launchApplication(withBundleIdentifier: bundleIdentifier, options: .default, additionalEventParamDescriptor: nil, launchIdentifier: nil)
}

推荐阅读