如何从Mac OS应用程序重新启动aribtrary应用程序

时间:2020-10-18 22:22:10

标签: swift macos

我继承了Mac OS项目,并且需要重新启动浏览器(以及其他可能的其他应用程序/服务)。

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

我可以使用任何流程管理Swift API吗?或者我应该只使用system()execv()之类的东西?

我认为,杀死并启动其他进程将需要提升的特权。我可以使用Swift中的API来处理密码提示吗?还是需要自己照顾一下?

1 个答案:

答案 0 :(得分:2)

您可以使用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)
}