89

我正在研究一种从 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

谢谢你。

4

4 回答 4

123

在构造函数本身中传递您的参数。

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();
于 2011-04-09T11:31:10.323 回答
9

你在正确的轨道上。这两个 构造函数接受参数,或者您可以在构造后使用ProcessBuilder#command(java.util.List)和指定它们ProcessBuilder#command(String...)

于 2011-04-09T11:25:49.230 回答
0
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"); 
    }
}
于 2016-09-15T04:23:56.330 回答
0

如果您的 exe 依赖于某些 dll 或某些依赖项,那么下面对我有用,那么您需要设置目录路径。正如下面提到的 exePath 意味着 exe 与它的引用文件一起放置的文件夹。

创建任何临时文件的 Exe 应用程序,因此它将在 processBuilder.directory(...) 中提到的文件夹中创建

**

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();
} 

**

于 2016-10-07T07:46:24.713 回答