gpt4 book ai didi

运行 .exe 快捷方式的 Java 代码

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:49 24 4
gpt4 key购买 nike

有什么方法可以从快捷方式打开记事本或其他应用程序?

这是我的代码:

import java.io.File;
import java.io.IOException;

public class acrobat {

public static void main(String[] args) throws IOException, InterruptedException {
String[] notepad = {"C:\\Users\\Desktop\\notepad.lnk"};

Process p = Runtime.getRuntime().exec(notepad);
p.waitFor();
}
}

我想从快捷方式打开应用程序,但出现错误..

    Exception in thread "main" java.io.IOException: Cannot run program "C:\Users\robert\Desktop\notepad.lnk": CreateProcess error=193, %1 is not a valid Win32 application
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at acrobat.main(acrobat.java:11)
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 4 more

如果我只写 notepad.exe 而不是它的工作,但是它的路径不起作用。有什么方法可以用快捷方式打开吗?

最佳答案

您在桌面上看到的快捷方式实际上是一个扩展名为.lnk 的文件。真正的完整路径是:

C:\Users\Desktop\notepad.exe.lnk

尝试通过 exec() 运行它会产生一个“CreateProcess error ... is not a valid Win32 application”错误。


幸运的是,您也可以通过 ProcessBuilder 运行它们实用类。

public static void main(String[] args) throws Exception {
ProcessBuilder pb = new ProcessBuilder("cmd", "/c",
"C:\\Users\\robert\\Desktop\\notepad.lnk");
Process p = pb.start();
p.waitFor();
}



如果你必须使用Runtime.getRuntime().exec(),你可以通过rundll32<打开lnk文件:

Process p = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " +
"C:\\Users\\robert\\Desktop\\notepad.lnk");
p.waitFor(); // watch out

但是请记住,通过这种方法,p.waitFor(); 和类似的方法调用可能不会得到预期的结果:如您所见,创建的进程是rundll32,不是快捷方式的 (notepad.exe)

关于运行 .exe 快捷方式的 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17860046/

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