Batch-Datei in RichTextBox anzeigen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Da man scheinbar das ganze nicht versteht, Hier genau was ich damit machen will:
    Ich habe einen MineCraft-Server, den ich mithilfe einer .bat-Datei starte.
    Nun will ich das Ganze aber mit einem Programm regeln, wo man die Selben Funktionen hat wie in einer Konsole.
    Nein, man hat eine Launch.bat mit folgendem Aufbau:
    java -Xmx7G -Xms6G -jar mcserver.jar nogui
    pause

    Bei einem Klick darauf öffnet sich die Konsole in der auf die Server.jar zu gegriffen wird, der Server startet.
    Nun kann man den Server über die Konsole steuern, so gibt man beispielsweise "help" an, werden alle Befehle angezeigt, die man nutzen kann.

    kingsunil2000 schrieb:

    Ich habe einen MineCraft-Server, den ich mithilfe einer .bat-Datei starte.
    Gib im Forum oben rechts in der erweiterten Suche MineCraft ein. 887 Treffer. Dein Problem ist dabei. Garantiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ich verstehe glaub ich was du meinst.
    Du willst anstatt in der cmd.exe zu tippen mit ner Textbox Befehle an die RTB übergeben die cmd.exe führt sie für dich aus aber die ganze Anzeige soll über die RTB laufen.
    Wenn dem so ist musst du an die Console senden und aus der Console lesen. Etwas overpowered meinste nicht? Starte einfach die cmd.exe aus deinem Programm und gib dann dein Zeug ein.
    Du willst sicher nur eine wunderschöne obercoole Oberfläche haben obwohl es nicht von nöten wäre.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    Genau das, was du sagst, will ich haben. Diesen Code hier habe ich gefunden, doch nichts passiert:

    VB.NET-Quellcode

    1. Public BefehlAusführen As System.IO.StreamWriter
    2. Dim p As New Process()
    3. Sub Console()
    4. p.StartInfo.FileName = "C:\Program Files (x86)\Java\jre7\bin\java.exe"
    5. p.StartInfo.Arguments = "java -Xmx7G -Xms6G -jar mcserver.jar nogui"
    6. p.StartInfo.RedirectStandardError = True
    7. p.StartInfo.RedirectStandardInput = True
    8. p.StartInfo.RedirectStandardOutput = True
    9. p.StartInfo.CreateNoWindow = True
    10. p.StartInfo.UseShellExecute = False
    11. p.Start()
    12. p.BeginErrorReadLine()
    13. p.BeginOutputReadLine()
    14. BefehlAusführen = p.StandardInput
    15. End Sub
    16. Public Delegate Sub WriteA(ByVal Text As String)
    17. Private Sub Write(ByVal Line As String)
    18. RichTextBox1.Text &= Line
    19. End Sub
    20. Private Sub WriteProcessOutput(ByVal sendingProcess As Object, ByVal outLine As DataReceivedEventArgs)
    21. ' Daten kommen nicht auf GUI Thread -> per anonymer Methode Invoken
    22. If outLine.Data IsNot Nothing Then
    23. Me.Invoke(Sub() TextBox1.AppendText(outLine.Data & Environment.NewLine))
    24. End If
    25. End Sub
    26. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    27. BefehlAusführen.WriteLine(TextBox1.Text)
    28. End Sub



    Unnötiges Vollzitat entfernt
    -Artentus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Artentus“ ()

    zunächstmal: Was ist mit der Konsole nicht in Ordnung, dass du meinst, einen eigenen Wrapper drumrum schreiben zu müssen?

    Ansonsten trenne dabei ein- und Aus-gabe, das ist bei Konsole ja vermischt - in WinForms kann und sollte man das trennen.
    Also optisch könnte man das wie einen Chat gestalten, mit einer Sende-Textbox und einem Log der Messages.