Pergunta

Se eu OPTION + RIGHT CLICK no ícone do Finder, eu recebo um " Relançamento " opção no menu de contexto. Eu gostaria de relançar programaticamente Finder, se possível. Eu tenho certeza que há uma maneira melhor de fazer isso do que simplesmente matá-lo e deixá-lo reiniciar. Suponha que eu tenho o bom autorização / permissões para fazê-lo já.

Além disso, eu gostaria de reiniciar Spotlight também.

Foi útil?

Solução

Enviar uma saia evento usando AppleScript, em seguida, enviá-lo um evento para ativar:

//tell Finder to quit
NSAppleScript *restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to quit"];
[restartFinder executeAndReturnError:nil];

EDIT: adicionar um atraso para se certificar do Finder está pronto para receber um evento activate. Na minha máquina, às vezes ele precisa esse atraso, às vezes não:

//delay 1 second
restartFinder = [[NSAppleScript alloc] initWithSource:@"delay 1"];
[restartFinder executeAndReturnError:nil];

(... end EDIT)

//tell Finder to activate
restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to activate"];
[restartFinder executeAndReturnError:nil];

Outras dicas

Localizador é mantido vivo pelo sistema, assim você pode simplesmente matá-lo e ele vai relançar automaticamente. Eu uso killall Finder para alcançar este objetivo.

'relançamento' quase certamente apenas envia um sinal kill para o Finder.

Killing do Finder com obras killall Finder desde que o sistema irá relançar-lo automaticamente.

[[NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall" 
    arguments:[NSArray arrayWithObjects:@"Finder", nil]] waitUntilExit];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top