Pb : commande dos avec l'invite

Résolu
Signaler
Messages postés
15
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2005
-
Messages postés
15
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2005
-
Voila j'ai une appliqtion en C (enfin, un batch C) et je voudrais faire une interface graphique pour la lancer.

Voila comment ca ce passe sans l'interface graph. :
Le batch est lancer à partir de l'invite de commande ("cmd").
Et donc je peux ainsi voir sont évolution avec les traces dans la boite de commande.
Avec l'interface graphique developpé avec Swing :
Jutilise la commande :
runtime.getruntime().exec("nomfic.exe");
je n'est pas la boite de commande, alors que je voudrais l'afficher. Et je vois pas comment utiliser le process.
le prog ne renvoie aucune exception, mais il tombe dans une boucle infini et je n'arrive pas a la supprimer.

voila un exemple de ce que j'ai fait :

void bt_lance_actionPerformed(ActionEvent e) {
System.out.println("coucou");
try
{
Runtime run = Runtime.getRuntime();
Process p = run.exec("cmd");
// Pour lire le process
InputStream in = p.getInputStream();
// Pour ecrire dans la sortie
File file = new File("sortie_batch.txt");
FileOutputStream out = new FileOutputStream(file);
int b = in.read();
while (b!=-1) {
out.write(b);
b=in.read();
System.out.print(String.valueOf(b));
}
out.close();
in.close();
System.out.println("coucou2");
}
catch(IOException io)
{
System.out.println("Impossible d'execter le programme");
}
}

Merci pour toute aide que vous m'apporterez
Pouet !!!!!!!!!!!

4 réponses

Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
c'est clair que la commande ne finira pas tant que tu ne lui envoie pas "exit\n"
Messages postés
15
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2005

merci pour le exit wargre
mais est ce que quelqu'un pourrai m'indiquer un moyen d'afficher la boite de commande
ou autrement un moyen de récupérer le trace complet du batch c
ou autrement de faire une barre de défilement pour dire que le programme est en cours ????

Pouet !!!!!!!!!!!
Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
ca ca depend de ton appli il faut que tu recupere des données du Process (p.getInputStream()) et que tu les traites.

note bien que pour l'instant ton process ne fait rien. (c'est juste la console de commmande)
pour lui faire faire qqchose, il faut que tu lui envoie ton instruction
p.getOutputStream().write(instruction...);
avec instruction genre "cd ....\nlanceProg.bat\n"
Messages postés
15
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
21 avril 2005

merci wargre
bon j'ai trouver une solution pour ceux que ca interresse ....

void bt_lance_actionPerformed(ActionEvent e) {
System.out.println("coucou");
try
{
Runtime run = Runtime.getRuntime();
Process p = run.exec("Essai.exe");
// Pour lire le process
InputStream in = p.getInputStream();
// Pour ecrire dans la sortie
File file = new File("sortie_batch.txt");
FileOutputStream out = new FileOutputStream(file);
System.out.println("b avant = "+in.available());
int tmp = in.read();
System.out.println("tmp = "+tmp);
int b = in.available();
System.out.println("b = "+b);
for (int i=0; i<b+1; i++){
out.write(tmp);
System.out.print(String.valueOf(tmp)+"\n");
tmp=in.read();
}
p.destroy();
out.close();
in.close();

System.out.println("coucou2");
}
catch(IOException io)
{
System.out.println("Impossible d'execter le programme");
}
}

Pouet !!!!!!!!!!!