Ouverture d'un console dans un textbox c# [Résolu]

leonardo14 23 Messages postés vendredi 28 novembre 2008Date d'inscription 24 mai 2009 Dernière intervention - 23 mai 2009 à 21:47 - Dernière réponse : leonardo14 23 Messages postés vendredi 28 novembre 2008Date d'inscription 24 mai 2009 Dernière intervention
- 24 mai 2009 à 20:18
Bonjour jai trouver plusieurs code permettant d'ouvrire une console et de transférer le text dans un textbox de ma form mais plusieur code sont asser compliquer ( Je suis un debutant mais qui aime se quil fait. 16 ans) Voicie mon but. Jai une aplication console. Jaimerais aux clique dun boutton louverture de cett console et de transféré sont text (ligne par ligne) dans un textbox. Mais jaimerais que le text se transfere dans mon text box jusqua la fermeture de la console. Ma console contien Beaucoup de text qui défile il est donc nessesaire que le text dans mas textbox defile aussi.

Voicie une image de ma console.

Allors proposer moi des code et expliquer comment les exploiter. Mercie de votre aide.
Afficher la suite 

7 réponses

Répondre au sujet
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 24 mai 2009 à 19:04
+3
Utile
Re,
En fait c'est à cause du formattage de ce controle, il enleve quelques espaces, de façàn aléatoire.
ex :delegatevoidSetData devrait être delegate void SetData

et newobject[] { e.Data }); ==> new object[] { e.Data });

voici le code non formatté.

        delegate void SetData(string data);
        private void button4_Click(object sender, EventArgs e)
        {
            Process console = new Process();
            console.StartInfo.FileName = @"D:\mes documents\office\Visual Studio 2008\Projects\WindowsFormsApplication2\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe";
            console.StartInfo.UseShellExecute = false;
            console.StartInfo.RedirectStandardOutput = true;
            console.OutputDataReceived += new DataReceivedEventHandler(console_OutputDataReceived);
            console.Start();
            console.BeginOutputReadLine();           
        }
        void console_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (!String.IsNullOrEmpty(e.Data))
            {
                if (textBox2.InvokeRequired)
                {
                    textBox2.Invoke(new SetData(AddMessage), new object[] { e.Data });
                }
                else
                {
                    textBox2.Text +=  e.Data;
                }
            }
        }
        void AddMessage(string message)
        {
            textBox2.Text += Environment.NewLine + message;
            textBox2.Select(textBox2.Text.Length, 1);
            textBox2.ScrollToCaret();


        }

C# is amazing, enjoy it!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Robert33
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 23 mai 2009 à 23:09
0
Utile
Bonsoir,
Excuse ma question qui peut paraitre bête, mais pourquoi ne pas transformer ton application en WinForm plutôt que de garder une Console ?

C# is amazing, enjoy it!
Commenter la réponse de cs_Robert33
leonardo14 23 Messages postés vendredi 28 novembre 2008Date d'inscription 24 mai 2009 Dernière intervention - 24 mai 2009 à 00:03
0
Utile
Ses simple se nest pas moi qui a compiler la console que je tente d'utiliser. Je n'est pas les sources. Voila!
Commenter la réponse de leonardo14
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 24 mai 2009 à 17:41
0
Utile
Alors il faut faire un petit exe en winform, qui va lancer ton exe console.


En utilisant la class Process et en récuperant les messages envoyés vers le StandardOutput, que tu redirigeras vers to TextBox.
Attention, il faut que le texteBox soit multiligne et ait un ScrollBar vertical.
exemple:

delegatevoid
SetData(string data);
private
void button1_Click(object sender, EventArgs e)
{
   Process
console = newProcess();
   console.StartInfo.FileName = @"D:\mes documents\office\Visual Studio 2008\Projects\WindowsFormsApplication\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe"
;
   console.StartInfo.UseShellExecute = false
;
   console.StartInfo.RedirectStandardOutput = true
;
   console.OutputDataReceived += new
DataReceivedEventHandler(console_OutputDataReceived);
   console.Start();
   console.BeginOutputReadLine();
}
void
console_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
   if
(!String.IsNullOrEmpty(e.Data))
   {
      if
(textBox2.InvokeRequired)
      {
         textBox2.Invoke(new
SetData(AddMessage), newobject[] { e.Data });
      }
      else
      {
         AddMessage(e.Data);
      } 
   }
}
void
AddMessage(string message)
{
   textBox2.Text += Environment
.NewLine + message;
   textBox2.Select(textBox2.Text.Length, 1);
   textBox2.ScrollToCaret();
}




 







C# is amazing, enjoy it!
Commenter la réponse de cs_Robert33
leonardo14 23 Messages postés vendredi 28 novembre 2008Date d'inscription 24 mai 2009 Dernière intervention - 24 mai 2009 à 18:43
0
Utile
Je ne comprend pas parceque je lit ton code et tout est bon. mais quand je lutilise il me mais des erreur.

Comme:

<strike>delegate</strike><strike>voidSetData</strike>(string
data);
private
void button1_Click(object sender, EventArgs e)
{
   Process
console = newProcess();
   console.StartInfo.FileName = @"D:\mes
documents\office\Visual Studio
2008\Projects\WindowsFormsApplication\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe"
;
   console.StartInfo.UseShellExecute = false
;
   console.StartInfo.RedirectStandardOutput = true
;
   console.OutputDataReceived += new
DataReceivedEventHandler(console_OutputDataReceived);
   console.Start();
   console.BeginOutputReadLine();
}
void
console_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
   if
(!String.IsNullOrEmpty(e.Data))
   {
      if
(textBox2.InvokeRequired)
      {
         textBox2.Invoke(new
SetData(AddMessage), newobject<strike>[] { e.Data });</strike>
      }
      else
      {
         AddMessage(e.Data);
      } 
   }
}
void
AddMessage(string message)
{
   textBox2.Text += Environment
.NewLine + message;
   textBox2.Select(textBox2.Text.Length, 1);
   textBox2.ScrollToCaret();
}

Error    1    Method must have a return type 
Error    2    Syntax error; value expected 
Error    3    ) expected
Error    4    ; expected
Error    5    Invalid expression term ')'
Commenter la réponse de leonardo14
leonardo14 23 Messages postés vendredi 28 novembre 2008Date d'inscription 24 mai 2009 Dernière intervention - 24 mai 2009 à 20:11
0
Utile
oui en effet aprés avoir jeter un coup d'oeil je me suis aprecu de cela mercie tu ma presque sauver la vie mon ami!
Je te remercie pour ton aide.
Commenter la réponse de leonardo14
leonardo14 23 Messages postés vendredi 28 novembre 2008Date d'inscription 24 mai 2009 Dernière intervention - 24 mai 2009 à 20:18
0
Utile
Humm dernier chose le code me permet daficher le text que losrque la console ferme. Humm mais le problem se que la console est un continue et donc dont afficher le text en continue (du text qui défile) possible?
Ma console nest pas supposer fermer.
Commenter la réponse de leonardo14

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.