5

如果我OPTION + RIGHT CLICK在 Finder 图标上,我会在上下文菜单中看到“重新启动”选项。如果可能的话,我想以编程方式重新启动 Finder。我确信有比杀死它并让它重新启动更好的方法。假设我已经有适当的授权/权限这样做。

此外,我还想重新启动 Spotlight。

4

4 回答 4

5

使用 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];
于 2009-09-22T21:21:44.173 回答
3

Finder 由系统保持活动状态,因此您可以将其杀死,它会自动重新启动。我killall Finder用来完成这个。

于 2009-09-22T21:21:27.247 回答
-1

killall Finder由于系统会自动重新启动它,因此可以使用作品杀死 Finder 。

[[NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall" 
    arguments:[NSArray arrayWithObjects:@"Finder", nil]] waitUntilExit];
于 2013-03-12T23:56:24.680 回答
-1

“重新启动”几乎可以肯定只是向 Finder 发送了一个终止信号。

于 2009-09-22T20:41:55.377 回答