web-dev-qa-db-fra.com

Java Programmation: appelez un exe de Java et transmettez des paramètres

Je suis en train de trouver un mécanisme pour appeler un exe à partir de Java et lui transmettre des paramètres spécifiques. Comment puis-je faire?

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

Le code précédent fonctionne. Mais je ne suis pas capable de passer des paramètres. MyExe.exe accepte les paramètres. Un autre problème est lorsque PathToExe a des espaces vides. ProcessBuilder semble ne pas fonctionner. Par exemple:

C:\\User\\My applications\\MyExe.exe

Merci.

81
Lorenzo B

Passez vos arguments dans le constructeur lui-même.

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();
113

Vous êtes sur la bonne voie. Les deuxconstructeurs acceptent les arguments, ou vous pouvez les spécifier après la construction avec ProcessBuilder#command(Java.util.List) et ProcessBuilder#command(String...) .

7
T.J. Crowder

Ci-dessous fonctionne pour moi si votre exe dépend d'une dll ou de certaines dépendances, vous devez définir le chemin du répertoire. Comme mentionné ci-dessous, exePath signifie dossier où exe est placé avec ses fichiers de référence.

L'application exe crée n'importe quel fichier temporaray afin qu'elle crée dans le dossier une mention dans 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();
} 

**

0
user3124811
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"); 
    }
}
0
Shikha Chauhan