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はパラメーターを受け入れます。もう1つの問題は、PathToExeに空白スペースがある場合です。 ProcessBuilderが機能していないようです。例えば:
C:\\User\\My applications\\MyExe.exe
ありがとうございました。
引数をコンストラクター自体に渡します。
Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();
あなたは正しい軌道に乗っています。 twoconstructors 引数を受け入れるか、 ProcessBuilder#command(Java.util.List)
および ProcessBuilder#command(String...)
を使用して、構築後にそれらを指定できます。
あなたのexeがいくつかのdllまたは特定の依存関係に依存している場合は、ディレクトリパスを設定する必要があります。以下で言及するように、exePathは、exeが参照ファイルとともに配置されているフォルダーを意味します。
任意のtemporarayファイルを作成するエグゼアプリケーションは、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();
}
**
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");
}
}