代码之家  ›  专栏  ›  技术社区  ›  i_am_jorf

如何以编程方式重新启动finder?

  •  5
  • i_am_jorf  · 技术社区  · 15 年前

    如果我 OPTION + RIGHT CLICK 在finder图标上,我得到一个“ 重新开始 “上下文菜单中的选项。如果可能的话,我想以编程方式重新启动finder。我相信有更好的方法可以做到这一点,而不仅仅是杀死它,让它重新启动。假设我已经有了适当的授权/权限。

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

    4 回复  |  直到 11 年前
        1
  •  5
  •   Rob    15 年前

    使用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];
    
        2
  •  3
  •   Dave DeLong    15 年前

    系统会保持finder的活动状态,因此您只需杀死它,它就会自动重新启动。我用 killall Finder 为了完成这一点。

        3
  •  -1
  •   ceejayoz    15 年前

    “重发”几乎可以肯定只是向搜索者发送一个杀死信号。

        4
  •  -1
  •   Reimund    11 年前

    杀人犯 killall Finder 工作,因为系统将自动重新启动。

    [[NSTask launchedTaskWithLaunchPath:@"/usr/bin/killall" 
        arguments:[NSArray arrayWithObjects:@"Finder", nil]] waitUntilExit];
    
    推荐文章