【发布时间】:2017-04-10 14:21:01
【问题描述】:
我正在开发一个实用程序,它需要重新启动 Finder 才能显示更改。
我使用NSRunningApplication 的terminate 函数来确保不会发生复制操作等(swift):
let apps = NSRunningApplication.runningApplicationsWithBundleIdentifier("com.apple.finder")
if apps.count > 0 {
let finder = apps[0]
finder.terminate()
}
由于我在sharedWorkspace.notificationCenter 中侦听NSWorkspaceDidTerminateApplicationNotification,因此我可以使用launchAppWithBundleIdentifier 再次启动Finder。所有这一切都很好。
现在,当 Finder 再次启动时,之前打开的窗口已关闭。无论用户对“退出和重新打开应用程序时恢复窗口”的偏好如何,我都想重新打开它们。
这是因为 Finder 重新启动是我的软件活动的副作用,并且用户绝对不打算关闭窗口。
我可能会看到 AppleScript 发生这种情况,但我没有足够的经验来设计一种方法来获取所有窗口状态(包括窗口位置和大小),在 Finder 重新启动期间存储它们,然后重新打开它们。
任何帮助将不胜感激!
【问题讨论】:
标签: swift macos cocoa swift2 finder