gpt4 book ai didi

java - Process.waitFor() 不等待执行的快捷方式 (.lnk)

转载 作者:行者123 更新时间:2023-12-04 05:48:14 25 4
gpt4 key购买 nike

在 Java 中,我想执行一个 .lnk 快捷方式,它自己执行一个 .exe 文件。

我像这样运行可执行文件:

 String currentDir = new File(game.getGamePath()).getCanonicalPath();

ProcessBuilder processBuild = new ProcessBuilder(currentDir);
processBuild.command("cmd", "/c", "start" , currentDir);
Process = processBuild.start();
try {
Process.waitFor();
} catch (InterruptedException ex) {
Logger.getLogger(AuroraLauncher.class.getName()).log(Level.SEVERE, null, ex);
}

我希望 waitFor() 线程阻塞方法等待实际执行的应用程序(.exe 文件)终止,然后才继续而不是快捷方式。有没有办法简单地做到这一点,或者我必须以某种方式从 .lnk 中提取 .exe 路径?如果是这样,我会怎么做?

最佳答案

Windows 命令“start”有一个选项/wait 你必须指定告诉他它必须等待进程结束。
此代码运行直到您关闭记事本:

    @Test
public void run() throws IOException {
String currentDir = new File(System.getProperty("user.home"),"desktop/notepad.lnk").getCanonicalPath();

ProcessBuilder processBuild = new ProcessBuilder(currentDir);
processBuild.command("cmd", "/c", "start","/wait", currentDir);
Process p= processBuild.start();
try {
p.waitFor();
} catch (InterruptedException ex) {

}
System.out.println("process terminated!");

}

比解析 lnk 文件更简单。

关于java - Process.waitFor() 不等待执行的快捷方式 (.lnk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10417879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com