Pb : commande dos avec l'invite

Résolu
irraxen33 Messages postés 15 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 21 avril 2005 - 7 sept. 2004 à 17:02
irraxen33 Messages postés 15 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 21 avril 2005 - 8 sept. 2004 à 10:52
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

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
8 sept. 2004 à 08:58
c'est clair que la commande ne finira pas tant que tu ne lui envoie pas "exit\n"
3
irraxen33 Messages postés 15 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 21 avril 2005
8 sept. 2004 à 09:23
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 !!!!!!!!!!!
3
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
8 sept. 2004 à 10:25
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"
3
irraxen33 Messages postés 15 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 21 avril 2005
8 sept. 2004 à 10:52
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 !!!!!!!!!!!
3
Rejoignez-nous