Entwickler-Ecke

WinForms - Konsolenbefehle verarbeiten


Skiller-1988 - Di 09.09.08 08:54
Titel: Konsolenbefehle verarbeiten
Hi,
mein Problem ist das ich einen Konsolenbefehl der im Hintergrund laufen soll "verarbeiten" will und zwar in der form das dass Ergebniss z.B. von einen Pingbefehl in der Textbox ausgegeben werden soll.
Mein Problem ist, dass ich das mit der Ausgabe nicht hinbekomme.

meine kläglichen Versuche:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
            
            Process p = new Process();
            p.StartInfo.FileName="ping";
            p.StartInfo.Arguments="127.0.0.1";
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            textBox1.Text = p.StandardOutput.ReadToEnd();


Skiller-1988 - Mi 10.09.08 12:25

hat den keine eine Lösung bzw. Idee zu meinen Problem?


Peter Enz - Mi 10.09.08 13:06

user profile iconSkiller-1988 hat folgendes geschrieben:
hat den keine eine Lösung bzw. Idee zu meinen Problem?


Doch:

C#-Quelltext
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:
31:
32:
33:
    
   private void button1_Click(object sender, EventArgs e)
   {
      Process p = new Process();
      p.StartInfo.UseShellExecute = false;
      p.StartInfo.RedirectStandardOutput = true;
      p.StartInfo.FileName = "ping";
      p.StartInfo.Arguments = "192.168.0.254";
      p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
      p.Start();
      p.BeginOutputReadLine();
    }

    void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
      if (e.Data == null)
      {
        return;
      }
      if (listBox1.InvokeRequired)
      {
        listBox1.Invoke(
          (MethodInvoker)delegate()
          {
            listBox1.Items.Add(e.Data.ToString());
        });
      }
      else
      {
        listBox1.Items.Add(e.Data.ToString());
      }
    }
  }


In der Hilfe zu Process.BeginOutputReadLine findest Du eigentlich alles.

Gruß
Peter


Skiller-1988 - Mi 10.09.08 14:14

Danke das war genau was ich wollte. :zustimm: