5

If I OPTION + RIGHT CLICK on the Finder icon, I get a "Relaunch" option in the context menu. I would like to programmatically relaunch Finder, if at all possible. I'm sure there is a better way to do it than to just kill it and let it restart. Assume I have the proper authorization / permissions to do so already.

Additionally, I would like to restart Spotlight as well.

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

'Relaunch' almost certainly just sends a kill signal to the Finder.

于 2009-09-22T20:41:55.377 に答える
-1

Killing Finder with killall Finder works since the system will automatically relaunch it.

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