swift - 如何从 Mac OS 应用程序重新启动任意应用程序
问题描述
我继承了一个 Mac OS 项目,我需要重新启动浏览器(可能还有其他应用程序/服务)。
这是我第一次使用桌面应用程序,以前的经验主要是移动设备。
我可以使用任何流程管理 Swift API 吗?或者我应该选择system()
orexecv()
之类的?
我认为杀死和启动其他进程将需要提升的权限。Swift 中是否有我可以用来处理密码提示的 API,或者这是我需要自己处理的事情?
解决方案
您可以使用 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)
}
推荐阅读
- python - Sqlalchemy 查询/过滤器以检查 INSERT Python 上的重复项
- c++ - 如何在 C++ 中实现确定性有限自动机类
- python - For循环没有遍历列表中的所有值?
- json - jq:一个 jq 命令来更新 Json 文件中的多个值
- ssis - SSIS派生列表达式 - 删除前导零
- java - 如何在没有显式代码的情况下在 mule esb 3.9 的 inboud-endpoint 上收听消息的到达?
- asp.net - 在 asp.net mvc 的单元测试中,对象引用未设置为对象问题的实例
- c# - 在 UWP 中禁用游戏手柄导航
- mongodb - MongoDB findOneAndUpdate 写入冲突显着影响性能
- python - Tensorflow/Keras 模型无视训练说明?