Java编程:从Java调用一个exe文件并传递参数
我想出了一个机制来调用一个从Java的EXE和传递特定的参数。 我能怎么做?
Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe").start(); InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; System.out.printf("Output of running %s is:", Arrays.toString(args)); while ((line = br.readLine()) != null) { System.out.println(line); }
以前的代码工作。 但是我无法传入参数 。 MyExe.exe接受参数。 另一个问题是当PathToExe有空格时。 ProcessBuilder似乎不工作。 例如:
C:\\User\\My applications\\MyExe.exe
谢谢。
在构造函数中传递你的参数。
Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();
你在正确的轨道上。 这两个 构造函数接受参数,或者您可以使用ProcessBuilder#command(java.util.List)
和ProcessBuilder#command(String...)
来指定它们。
import java.io.IOException; import java.lang.ProcessBuilder; public class handlingexe { public static void main(String[] args) throws IOException { ProcessBuilder p = new ProcessBuilder(); System.out.println("Started EXE"); p.command("C:\\Users\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"); p.start(); System.out.println("Started EXE"); } }
下面的工作对我来说,如果你的EXE依赖于某些DLL或某些依赖项,那么你需要设置目录path。 如下面提到的exePath意味着文件夹放在与它的引用文件一起。
Exe应用程序创build任何临时文件,所以它会在processBuilder.directory中提到的文件夹中创build(…)
**
ProcessBuilder processBuilder = new ProcessBuilder(arguments); processBuilder.redirectOutput(Redirect.PIPE); processBuilder.directory(new File(exePath)); process = processBuilder.start(); int waitFlag = process.waitFor();// Wait to finish application execution. if (waitFlag == 0) { ... int returnVal = process.exitValue(); }
**