1

当我单击“登录”按钮时,我有一个使用 jDesktop 打开 Windows 资源管理器界面的代码,它工作正常。

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
     Desktop desktop = Desktop.getDesktop();
    File dirToOpen;
    try {
        dirToOpen = new File("C://as//2010-0000-1");
        desktop.open(dirToOpen);
    } catch (IOException ex) {
        ex.getMessage();
    } catch (IllegalArgumentException iae) {
        System.out.println("File Not Found");
    }
}  

那么现在,我的问题是当我单击按钮 LOGOUT 时,jDesktop Windows 资源管理器界面也应该关闭......我不知道要使用什么代码......

4

1 回答 1

1

这不是那么简单,他们唯一的机会是如果您参考了相关过程。这意味着您将需要对流程进行更多控制......这也意味着它只能在 Windows 上运行......

我使用以下代码在 Windows 资源管理器中显示指定文件...

String path = file.getCanonicalPath();

ProcessBuilder pb = new ProcessBuilder("explorer.exe", "/select," + path);
pb.redirectError();
Process proc = pb.start();

一旦您可以访问Process,您可以尝试使用Process#destory来尝试并终止该过程。

启动进程应该从一个单独的线程完成,所以你不会把自己全部束缚在一个阻塞点上,你还应该消耗Process's 的输出,以防它导致进程停止。

ps-我目前无法访问 Windows 机器,所以我不确定是否Process#destory可以工作;)

于 2013-10-27T07:39:17.187 回答