CMD-output in textbox schreiben!?

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von mitchiboy.

    CMD-output in textbox schreiben!?

    Morgen zusammen
    ich will den ausgang einer CMD Fensters in eine Textbox schreiben..
    im moment sieht es bei mir so aus


    VB.NET-Quellcode

    1. Dim so As System.IO.StreamReader = pr.StandardOutput
    2. TextBox3.Text = so.ReadToEnd
    3. so.Close()



    allerdings schreibt der alles erst in die textbox nachdem er die batch datei durchlaufen hat...

    würde gernre dass das CMD fenster verschwindet bzw unsichtbar wird und er den Inhalt direkt in die textbox schreibt und auch fortlaufend...

    also nicht dass erst am ende alles angezeigt wird.. sondern dass er halt befehl für befehl anzeigt
    wie zb. beim Ping...
    da kommt die ausgabe ja im sekundentakt oder so


    danke

    mitchiboy schrieb:

    ...den Inhalt direkt in die textbox schreibt und auch fortlaufend...

    fortlaufend ... dann musst Du mit den Async-Methoden der Process-Klasse bearbeiten. Hier ein Beispiel:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Using p As New Process
    3. AddHandler p.OutputDataReceived, AddressOf Me.Process_OutputDataReceived
    4. ' Process definieren
    5. With p.StartInfo
    6. .FileName = "cmd"
    7. .CreateNoWindow = True
    8. .UseShellExecute = False
    9. .RedirectStandardInput = True
    10. .RedirectStandardOutput = True
    11. End With
    12. ' Process starten
    13. p.Start()
    14. ' Auszuführende Befehle
    15. Using sw As IO.StreamWriter = p.StandardInput
    16. sw.AutoFlush = True
    17. sw.WriteLine("cd /")
    18. sw.WriteLine("ping www.vb-paradise.de")
    19. End Using
    20. ' Ausgabe
    21. p.BeginOutputReadLine()
    22. End Using
    23. End Sub
    24. Private Delegate Sub LogDelegate(ByVal message As String, ByVal addDateTime As Boolean)
    25. Private Sub AppendLogLine(ByVal message As String, Optional ByVal addDateTime As Boolean = False)
    26. If addDateTime Then message = Now.ToString & " - " & message
    27. With RichTextBox1
    28. If .InvokeRequired Then
    29. .Invoke(New LogDelegate(AddressOf Me.AppendLogLine), message, addDateTime)
    30. Else
    31. .AppendText(message & vbNewLine)
    32. End If
    33. End With
    34. End Sub
    35. Private Sub Process_OutputDataReceived(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
    36. Me.AppendLogLine(e.Data, True)
    37. End Sub