我正在开发一个实用程序,需要重新启动Finder才能显示更改。
我使用NSRunningApplication
terminate
函数来确保不会发生复制操作等(swift):
let apps = NSRunningApplication.runningApplicationsWithBundleIdentifier("com.apple.finder")
if apps.count > 0 {
let finder = apps[0]
finder.terminate()
}
由于我正在NSWorkspaceDidTerminateApplicationNotification
中收听sharedWorkspace.notificationCenter
,我可以再次使用launchAppWithBundleIdentifier
启动Finder。所有这一切都很好。
现在,当Finder再次启动时,之前打开的窗口已经关闭。我想重新打开它们,无论用户在退出和重新打开应用程序时退出窗口的首选项是什么。
这是因为Finder重启是我软件活动的副作用,用户绝对不打算关闭窗口。
我可能会看到AppleScript发生这种情况,但我没有足够的经验来设计一种方法来获取所有窗口状态(包括窗口放置和大小),在Finder重启期间存储它们,然后重新打开它们。
非常感谢任何帮助!
答案 0 :(得分:1)
有趣的是,我实际上找到了一个我没想到的答案:Finder defaults
。碰巧(source),有一个名为NSQuitAlwaysKeepsWindows
的隐藏首选项,允许在重启后恢复Finder窗口。
if let finderDefaults = NSUserDefaults(suiteName: "com.apple.finder") {
finderDefaults.setBool(true, forKey: "NSQuitAlwaysKeepsWindows")
}