如果我OPTION + RIGHT CLICK
在 Finder 图标上,我会在上下文菜单中看到“重新启动”选项。如果可能的话,我想以编程方式重新启动 Finder。我确信有比杀死它并让它重新启动更好的方法。假设我已经有适当的授权/权限这样做。
此外,我还想重新启动 Spotlight。
如果我OPTION + RIGHT CLICK
在 Finder 图标上,我会在上下文菜单中看到“重新启动”选项。如果可能的话,我想以编程方式重新启动 Finder。我确信有比杀死它并让它重新启动更好的方法。假设我已经有适当的授权/权限这样做。
此外,我还想重新启动 Spotlight。
使用 AppleScript 向其发送退出事件,然后向其发送激活事件:
//tell Finder to quit
NSAppleScript *restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to quit"];
[restartFinder executeAndReturnError:nil];
编辑:添加延迟以确保 Finder 已准备好接收激活事件。在我的机器上,有时它需要这种延迟,有时它不需要:
//delay 1 second
restartFinder = [[NSAppleScript alloc] initWithSource:@"delay 1"];
[restartFinder executeAndReturnError:nil];
(...结束编辑)
//tell Finder to activate
restartFinder = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to activate"];
[restartFinder executeAndReturnError:nil];
Finder 由系统保持活动状态,因此您可以将其杀死,它会自动重新启动。我killall Finder
用来完成这个。
killall Finder
由于系统会自动重新启动它,因此可以使用作品杀死 Finder 。
[[NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall"
arguments:[NSArray arrayWithObjects:@"Finder", nil]] waitUntilExit];
“重新启动”几乎可以肯定只是向 Finder 发送了一个终止信号。