Come si fa a rilanciare Finder di programmazione?
-
13-09-2019 - |
Domanda
Se io OPTION + RIGHT CLICK
sull'icona del Finder, ho un opzione " Relaunch " nel menu contestuale. Vorrei rilanciare programmazione Finder, se possibile. Sono sicuro che ci sia un modo migliore per farlo che a poco ucciderlo e lasciarlo riavviare. Si supponga che ho l'autorizzazione appropriata / permessi di farlo già.
Inoltre, mi piacerebbe riavviare Spotlight pure.
Soluzione
Invia un smettere evento usando AppleScript, quindi inviarlo di un evento activate:
//tell Finder to quit
NSAppleScript *restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to quit"];
[restartFinder executeAndReturnError:nil];
EDIT: aggiungere un ritardo per assicurarsi Finder è pronto a ricevere un evento activate. Sulla mia macchina, a volte ha bisogno di questo ritardo, a volte non è così:
//delay 1 second
restartFinder = [[NSAppleScript alloc] initWithSource:@"delay 1"];
[restartFinder executeAndReturnError:nil];
(... fine EDIT)
//tell Finder to activate
restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to activate"];
[restartFinder executeAndReturnError:nil];
Altri suggerimenti
Finder è tenuto in vita dal sistema, in modo da poter semplicemente ucciderlo e sarà automaticamente rilanciare. Io uso killall Finder
per raggiungere questo obiettivo.
'rilancio' quasi certamente solo invia un segnale kill per il Finder.
Uccidere Finder con killall Finder
funziona in quanto il sistema rilancerà automaticamente.
[[NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall"
arguments:[NSArray arrayWithObjects:@"Finder", nil]] waitUntilExit];