Programmation Java: appeler un exe depuis Java et passer des paramètres


87

Je suis en train de trouver un mécanisme pour appeler un exe à partir de Java et en passant 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 en mesure de transmettre 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.


1
nouveau ProcessBuilder ("C: \\ PathToExe \\ MyExe.exe", "param1", "param2"). start ();
Prince John Wesley le


1
new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();Cet extrait est-il utile pour les arguments d'option? Par exemple -h qui signifie aide et ainsi de suite ..
Lorenzo B

qu'en est-il des chemins avec des espaces vides? Merci encore. Très utile!!
Lorenzo B

3
@Flex: Un argument est un argument. La signification de l'argument dépend entièrement du programme en cours d'exécution. Un programme pourrait interpréter -hcomme une option, un autre pourrait l'interpréter comme un nom de fichier. ProcessBuilderne sait ni ne s'en soucie. Re chemins avec des espaces: C'est l'une des raisons pour lesquelles les arguments sont donnés sous forme de chaînes discrètes plutôt que comme (disons) une liste délimitée par des espaces comme sur la ligne de commande et dans certaines API pauvres. Ajoutez des espaces là-dedans avec abandon, tout le chemin du programme sera donné au système d'exploitation pour le traiter comme il convient.
TJ Crowder

Réponses:




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

1
Où mettre les arguments?
Mert Serimer le

1
@Shikha, veuillez passer en revue la question
Anand j. Kadhi

0

Ci-dessous fonctionne pour moi si votre exe dépend d'une DLL ou d'une certaine dépendance, 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érences.

Application Exe créant n'importe quel fichier temporaire afin qu'il crée dans le dossier 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();
} 

**

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.