2016-11-26 2 views
0

Je suis en train de développer un utilitaire qui doit redémarrer le Finder pour que les modifications apparaissent.Rouvrir les fenêtres du Finder après la fin programmatique

J'utilise la fonction de terminateNSRunningApplication pour assurer qu'aucune opération de copie se passe, etc (rapide):

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

Depuis que je suis à l'écoute de NSWorkspaceDidTerminateApplicationNotification dans le sharedWorkspace.notificationCenter, je puis lancer à nouveau Finder avec launchAppWithBundleIdentifier. Tout cela fonctionne totalement bien.

Maintenant, lorsque le Finder redémarre, les fenêtres précédemment ouvertes ont été fermées. Je souhaite les rouvrir, quelles que soient les préférences de l'utilisateur pour "Restaurer les fenêtres lors de la fermeture et de la réouverture des applications". Ceci est dû au fait que le redémarrage du Finder est un effet secondaire de l'activité de mon logiciel et que l'utilisateur n'avait certainement pas l'intention de fermer les fenêtres. Je pourrais peut-être voir cela se produire avec AppleScript, mais je n'ai pas suffisamment d'expérience pour trouver un moyen d'obtenir tous les états (y compris le placement et la taille des fenêtres), les stocker pendant le redémarrage du Finder et les rouvrir ensuite.

Toute aide serait grandement appréciée!

Répondre

0

Chose drôle, j'ai trouvé la réponse quelque part que je ne m'attendais pas: le Finder defaults. En l'occurrence (source), il existe une préférence masquée nommée NSQuitAlwaysKeepsWindows qui permet de restaurer les fenêtres du Finder après un redémarrage.

if let finderDefaults = NSUserDefaults(suiteName: "com.apple.finder") { 
    finderDefaults.setBool(true, forKey: "NSQuitAlwaysKeepsWindows") 
}