ProcessStartInfo

Signaler
Messages postés
18
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 octobre 2005
-
Messages postés
18
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 octobre 2005
-
Bonjour, j'utilise la classe ProcessStartInfo pour lancer un processus à partir de mon application. Il faut que je passe plusieurs arguments à ce process, les arguments se passe dans un string :
ex:
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.Arguments = "www.google.fr";

or je ne sais pas comment lui passer plus d'1 arguments, je ne sais pas comment on les sépare à l'intérieur de la chaine de caractères. Peut-être des ";", des " ", des ","
Je n'en ai aucune idée.
Quelqu'un connait-il la réponse?
Merci beaucoup.

7 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
en fait ce n'est pas le framework qui interprete la chaine Arguments mais l'appli qui la recoit en parametre de lancement.
donc pour toi savoir comme la formatter il faut que tu saches ce qu'attend l'appli a lancer

Cocoricoooooooo !!!!
Messages postés
18
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 octobre 2005

Donc si c'est un main C++, il faut des espaces entre les arguments si j'ai bien compris?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
ça je sais pas
tout depend de la façon dont l'appli traite ce qui lui arrive au lancement

Cocoricoooooooo !!!!
Messages postés
91
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
25 janvier 2007

Salut,

Tu passes tes arguments séparer par un espace mais par contre utilise la classe Start:

J’ai créer une application dos qui prend deux args :
args[0] , agrs[1] et les affiches au console

et avec une autre appli je lance :

 


donc deux argument séparé par un espace et ainsi de suite
si t'arrive pas a faire fonctionner ça je peux t'envoyer un zip contenant l exemple

NO TIME TO WASTE
Messages postés
91
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
25 janvier 2007

pardon le code est le suivant


Process.Start(@"C:\ConsoleApplication1.exe", "Bonjour petitou "); 


NO TIME TO WASTE
Messages postés
18
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 octobre 2005

Ben voila le code exact (qui fonctionne) de ma methode pour ceux que ça intéressent.
Cette methode lance un exe qui est une appli console C++, et donc lance le main de l'appli. Pour récupérer les arguments dans le main, il faut faire avec argv[i] ou i est la position de l'argument.
Messages postés
18
Date d'inscription
jeudi 8 avril 2004
Statut
Membre
Dernière intervention
28 octobre 2005

Oups, erreur de manip!
dsl.
Voila le code

//On declare un ProcessStartInfo associé à monAppli.exe
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo(@"C:\monAppli.exe");
//On redirige la sortie du process
psi.RedirectStandardOutput = true;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//On passe les arguments ici en séparant les arguments par des espaces
psi.Arguments = "arg1 arg2 arg3";
psi.UseShellExecute = false;
//On declare un nouveau process
System.Diagnostics.Process monProcess;
//On demarre ce process sur le psi qui convient
monProcess= System.Diagnostics.Process.Start(psi);
//On recupere la sortier du process dans un streamreader
System.IO.StreamReader myOutput = monProcess.StandardOutput;
//Ici, on attend la fin d'execution du process (appel asynchrone), on peut surcharger cette methode pour attendre un teemps donné et reprendre la main si ça dure trop longtemps par exemple
monProcess.WaitForExit();
if (monProcess.HasExited)
{
//la sortie du process est recuperee dans un string
string output = myOutput.ReadToEnd();
MessageBox.Show(output);
}