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.

È stato utile?

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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top