Tout à fait...
Version imprimable
Tout à fait...
je teste ca demain, j'ai des truc de prévu aujourdhui.
Merci beaucoup d'avance :)
salut, je met bien un argument:
Code:startInfo.Arguments = server;
J'ai une application console 'test'
avec une variable server et un
Code:console.writelane("server");
-le probleme c'est que: pour pouvoir generer le .exe il ne doit pas y avoir d'erreur dans l'appli console
-pour regler le probleme je doit affecter une valeur a la variable server (exemple: "i";)
-si je met une valeur a la variable server et que je genere le projet pour ensuite lance a partir du winform l'appli test, ca lance l'appli test et ca affiche "i" au lieu de la valeur de la variable du winform.
Comment regler ca ?
c'est assez urgent, j'aimerais bien de l'aide si possible :(
Il faut que tu postes plus de code si tu veux de l'aide ;)
bah prenons un exemple:
Prend la valeur d'une TXTB remplit par l'utilisateur
Code:
1
2
3 string serverBRUT = TXTBfbSERVER.Text; string server = serverBRUT.Replace("\\","/");
je lance mon process info
Code:
1
2
3
4
5
6 ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Travail\Charles\RootProjo\TEST\TEST\bin\Debug\TEST.exe"); startInfo. startInfo.Arguments = server; Process.Start(startInfo);
et vla ma console
Code:
1
2
3
4
5
6
7 static void Main(string[] args) { string server = ""; Console.WriteLine(server); Console.ReadLine(); }
comment je peux affecter la variable server du winform a ma console ?
La variable 'args' en paramètre du Main de ta console est un tableau de strings qui contient l'ensemble des paramètres. Exemple :
Si tu lances ton application en utilisant cette commande :
C:\Travail\Charles\RootProjo\TEST\TEST\bin\Debug\TEST.exe -toto -titi
Alors args[0] = "-toto" et args[1] = "-titi"
Il faut donc traiter 'args' et chacun des paramètres afin de pouvoir récupérer la valeur qui t'intéresse et l'assigner à ta variable 'server'.
Ca marche creme !
Je part essayer comme ca :)
alors:
j'ai essayé ca:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 private void Form1_Load(object sender, EventArgs e) { TXTBheuredepart.Text = "8"; TXTheurearret.Text = "18"; TXTBminrandCYCLE.Text = "5"; TXTBmaxrandCYCLE.Text = "15"; TXTBmincopieFICHIER.Text = "3"; TXTBmaxcopieFICHIER.Text = "15"; } private void BTNlancer_Click(object sender, EventArgs e) { string Dosscopie2 = TXTBfbSERVER.Text; string Endroitcopie2 = TXTBfbLOCAL.Text; string Dosscopie = Dosscopie2.Replace("\\", "/"); string Endroitcopie = Endroitcopie2.Replace("\\", "/"); ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Travail\Charles\RootProjo\MoulinetteConsole\MoulinetteConsole\bin\Debug\MoulinetteConsole.exe"); startInfo.Arguments = Dosscopie; // Args 0 startInfo.Arguments = Endroitcopie; // Args 1 startInfo.Arguments = TXTheurearret.Text.ToString(); // Args 2 startInfo.Arguments = TXTBheuredepart.Text.ToString(); // Args 3
et dans console j'ai ca:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 static void Main(string[] args) { Console.WriteLine("L'appli s'est bien lance"); Console.ReadLine(); string Dossacopie = args[0]; Console.WriteLine("args0 OK"); Console.ReadLine(); string Endroitcopie = args[1]; Console.WriteLine("args1 OK"); Console.ReadLine(); int stop = Convert.ToInt32(args[3]); int go = Convert.ToInt32(args[4]); Console.WriteLine("2 et 3 OK"); Console.ReadLine();
Je lance mon appli:
Console se lance:
Appli s'est bien lancé.
Args 0 OK
args 1, ca plante. Je ne sais pas comment passer plusieurs arguments, une idée?
Essaie un truc du genre :
Code:
1
2startInfo.Arguments = "-toto -titi"
startInfo.Arguments = "-Dosscopie -Endroitcopie";
Passe:
Code:
1
2
3 args[0] = "-Dosscopie" et non la valeur de dosscopie args[1] = "-Endroitcopie" et non la valeur de endroitcopie
Dosscopie et endroitcopie sont des variables rentré par l'utilisateur et je souhaite passer les variables utilisateur en argument, c'est possible ?
j'ai une debut de solution:
laCode:
1
2
3
4
5
6 string Dosscopie = TXTBfbSERVER.Text; string Endroitcopie = TXTBfbLOCAL.Text; ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Travail\Charles\RootProjo\MoulinetteConsole\MoulinetteConsole\bin\Debug\MoulinetteConsole.exe", "-Dosscopie -Endroitcopie"); startInfo.Arguments = Dosscopie + Endroitcopie;
Imaginons l'utilisateur insere: dosscopie = "1" , endroitcopie = "2";Code:
1
2 args[0] = Dosscopie; args[1] = Endroitcopie;
je ne veux pas de la virgule et de l'espace. sauf que quand je change ma variableCode:
1
2 args[0] = "1 , " args[1] = "2 , "
parCode:string Dosscopie = TXTBfbSERVER.Text + ", ";
Code:string Dosscopie = TXTBfbSERVER.Text;
ca donne:
Code:
1
2 args[0] = "12" args[1] ERREUR.
Si tu fais comme cela :
Code:
1
2
3
4
5
6 var arg1 = "/Path/File.ext"; var arg2 = "/NewPath/NewFile.ext"; var arguments = string.Format("-Dosscopie:{0} -Endroitcopie:{1}", arg1, arg2); var startInfo = new ProcessStartInfo(@"C:\Travail\Charles\RootProjo\TEST\TEST\bin\Debug\TEST.exe", arguments);
Tu auras :
args[0] = "-Dosscopie:/Path/File.ext"
args[1] = "-Endroitcopie:/NewPath/NewFile.ext"
Si tu ne veux pas que tes utilisateurs puissent saisir n'importe quoi, c'est ensuite à toi d'effectuer les vérifications nécessaires ;)
Je me sens perdu la:
Dosscopie est une variable string. qui doit contenir un path de dossier "c:/test" par exemple
et Endroitcopie (la variable) devrat avoir un autre path pour exemple "c:/test/ok"
je veux que arg[0] ressort: "c:/test"
et arg[1]: "c/test/ok"
je veux pas de arg[0] = "-dossiercopie c:/test"
C'est à toi de définir ce que tu mets dans arg1 et arg2 (voir le code dans mon dernier post).
Tu n'es pas obligé de mettre -Dosscopie et -Endroitcopie. Si tu mets juste ça :
Code:var arguments = string.Format("{0} {1}", arg1, arg2);
alors tu auras :
args[0] = "/Path/File.ext"
args[1] = "/NewPath/NewFile.ext"
donc cela donnera
Code:
1
2
3
4
5
6 Dosscopie = @"c:/test" Endroitcopie @"c/test/ok" startInfo.Arguments = Dosscopie + " " + Endroitcopie
Merci mille fois mon appli marche mtn ^^
(j'ai appliqué la methode de matt, donc je n'utilise pas le .arguments)
sans problème le principe est le même. N'oublie pas de marquer la discussion en résolue