2016-11-26 65 views
0

我正在开发一个实用程序,需要重新启动Finder才能显示更改。程序化终止后重新打开Finder窗口

我用NSRunningApplicationterminate功能,以确保没有复制操作正在发生的事情,等(SWIFT):

let apps = NSRunningApplication.runningApplicationsWithBundleIdentifier("com.apple.finder") 
if apps.count > 0 { 
    let finder = apps[0] 
    finder.terminate() 
} 

因为我在sharedWorkspace.notificationCenter监听NSWorkspaceDidTerminateApplicationNotification,然后我就可以再次launchAppWithBundleIdentifier启动搜索。所有这些工作都很好。

现在,当Finder再次启动时,之前打开的窗口已关闭。我想重新打开它们,而不管用户对“退出和重新打开应用程序时还原窗口”的偏好设置。

这是因为Finder重新启动是我软件活动的副作用,用户绝对不打算关闭窗口。

我可能会看到AppleScript发生这种情况,但我没有足够的经验来设计一种获得所有窗口状态(包括窗口位置和大小)的方法,在Finder重新启动期间存储它们,并在之后重新打开它们。

任何帮助将不胜感激!

回答

0

有趣的是,我真的找到了答案,我没有想到的地方:Finder defaults。发生时(source),有一个名为NSQuitAlwaysKeepsWindows的隐藏首选项,允许在重新启动后恢复Finder窗口。

​​