Commander une appli Dos depuis une interface c#

[Résolu]
Signaler
Messages postés
2
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007
-
Messages postés
2
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007
-
Bonjour!

Tout d'abord j'ai bien cherché les sujets sur le forum, les tuto et les
codees mis à notre disposition pour essayer de comprendre comment le c#
fonctionne... Mais ça suffit pas! J'explique mon problème :
Je dois faire une interface graphique (en c#)
pour lancer une application (fenêtre ms dos) qui permet de modéliser
l'écoulement d'un fluide ou qu'il soit ...

Mon interface
graphique me permet de paramétrer le code de l'écoulement. C'est à dire
que grace aux menu strip qui me permettent d'ouvrir des fenetres de
propriétés, je peux choisir si tel ou tel paramètre est True ou False,
s'il vaut 100 ou 1000 etc ... l'idée est qu'une fois que j'ai renseigné
les divers paramétres de ma fenêtre je click sur OK et en faisant cette
action ça me rentre les paramètres dans la fenêtre ms dos ... Ensuite je sélectionne un autre Item du menu strip et ça m'ouvre une nouvelle fenêtre toujours de paramètre et ça m'écrit tout ça dans ma console à la suite de ce que j'ai rentré et ainsi de suite. Une fois que le code de modélisation est paramétré, il n'y a plus qu'à cliquer sur un bouton "Iterate" de mon interface pour lancer le calcul de modélisation...

Donc
voilà, le truc c'est que je sais pas comment faire, j'arrive à lancer
l'appli ms dos, par contre, que j'utilise "proc.StartInfo.CreateNoWindow = true;" ou "proc.StartInfo.Windows.Style.Hideen
"; soit la fenêtre dos n'apparaît plus mais fait planter le prog soit elle s'ouvre normalement ... mais le plus important, quel code utiliser pour que ça
envoie la ligne de commande à l'appli ?

Si vous pouvez me renseigner ça serait très très gentil car là je sèche completement!

ps: je suis débutant, donc je connais pas tous les termes techniques...

Merci par avance.

2 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Salut,

Pour passer les arguments de la ligne de commande :


-Process.Start
-ProcessStartInfo.Arguments


Pour manipuler les flux d'entrée et de sortie de l' application :


-ProcessStartInfo.RedirectStandardInput
-ProcessStartInfo.RedirectStandardOutput


exemple :



http://www.codyx.org/snippet_recuperer-text-programme-console_72.aspx
Messages postés
2
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007

Salut, merci pour ta réponse!

En fait, il s'avère que je faisais fausse route! Il serait préférable de stocker tous les paramètres dans un fichier .inp.
Jusque là pas de problème si j'enregistrais les paramètres dès la fin de leur saisie (j'ai plusieurs forms, la main qui est l'interface : menus pour sélectionner les autres forms et donc passer les paramètres). Mais en fait il faut qu'en cliquant sur un bouton du menu de la main form que ça enregistre tous les paramètres passés dans les divers forms ... et ça ça veut pas! Tout ça parce que les valeurs ne sont pas définies dans la main form ... il faudrait appeller la form puis la commande : Voici le début de code qu'il faut que je mette dans le main :

string path = @"d:\Stage\TolsFind.inp";
            //Ecriture de la veleur du paramètre LCHK
            TextWriter fileInfo = new StreamWriter(path);
            string sfile = this.LCHKCapture.Text;
            {
                fileInfo.WriteLine(sfile);
            }

           
            //Ecriture du choix du radiobutton LREAD
           
            if (this.LREADTrue.Checked == true)
                { fileInfo.WriteLine("T");}
            else
                {fileInfo.WriteLine("F");}
           
          
            fileInfo.Close();

Donc il veut pas parceque "
this.LCHKCapture.Text;"  et "
this.LREADTrue.Checked" sont définis dans une autre form ... donc comment faire ?

Merci par avance, et désoél d'être un newBe!