[VB.Net] Batch in Windows Forms einbinden

ParadoxMSL

Grünschnabel
Guten Morgen zusammen,
ich bin auf der suche nach einer Möglichkeit, die Ausgabe einer .batch in einer Windows Forms Anwendung anzeigen zu lassen. Zudem soll die Möglichkeit bestehen über die Button´s Befehle an die .batch zu senden.

Das ganze soll wie folgt aussehen.

Unbenannt.png

Dort wo der große Panel ist, soll der Inhalt der .batch Datei nachher zu sehen sein.
Dort wo die beiden kleinen Panel derzeit sind will ich später die CPU last und den RAM verbrauch der .batch anzeigen lassen.

Ist das möglich so wie ich mir das vorstelle?
Falls ja, wie setze ich das am besten um.
Welche Elemente muss ich verwenden, welchen Code muss ich wo benutzen?

Würde mich freuen wenn mir das einer gut verdaulich präsentieren könnte ;)

Danke schon einmal im vorraus für euer bemühen.
 
Hmm so ganz scheind es momentan nicht zu gehen.

Er schreibt nur die erste zeile in die ListBox
Dannach bleibt er einfach stehen.

Normal sollte eine Auflistung stattfinden was die .jar datei die mit der .batch aufgerufen wird grade macht.

So sieht es derzeit aus

Code:
        Dim args() As String = Environment.GetCommandLineArgs()
        ' This is the code for the base process
            Dim myProcess As New Process()
            ' Start a new instance of this program but specify the 'spawned' version.
            Dim myProcessStartInfo As New ProcessStartInfo(args(0), "spawn")
            myProcessStartInfo.FileName = "Server-1-Starten.bat"
            myProcessStartInfo.UseShellExecute = False
            myProcessStartInfo.RedirectStandardOutput = True
            myProcess.StartInfo = myProcessStartInfo
            myProcess.Start()

            Dim myStreamReader As StreamReader = myProcess.StandardOutput
            ' Read the standard output of the spawned process.
            Dim myString As String = myStreamReader.ReadLine()


            LstA.Items.Add(myString)

            myProcess.WaitForExit()
            myProcess.Close

Irgentwas mach ich wohl falsch... Kann mir da einer behilflich sein?
 
Du ließt auch nur die erste Zeile. Du musst natürlich alle Zeilen lesen... Genügt es, wenn die Ausgabe erst nach Beendigung des Batch-Jobs erscheint oder soll die Ausgabe zeitlich synchron mit dem Batch-Job ausgegeben werden?
 
Muss zeitlich synchron mit dem Batch-Job sein.
Also der Batch ruft eine .jar auf diese .jar gibt an den Batch-Job eine ausgabe weiter die die Console anzeigt.

Normal sieht die Console so aus:

1.png

Dort wird dann der Fortschritt ausgegeben. Das sollte also schon synchron sein.

Dann noch folgendes:

2.png

Unswar kann man wenn die spawn area fertig geladen hat Befehle eingeben z.B. op paradox
Das wollte ich gern auch über die Windows Forms machen können.

Möchte also eine Consolen Abstraktion erschaffen
 
Dann musst du in zeitlichen Abständen den OutputStream auf neuen Text überprüfen und dann ggf. ausgeben.
 
Habe mich jetzt einige male daran versucht doch irgentwas mache ich immer Falsch. Er gibt mir soabld ich eine schleife einbaue garnichtsmehr aus und rennt sich zu tode... Kann mir vieleicht einer ein Beispiel geben?
 
Hallo ParadoxMSL,

mit einer Schleife wird's recht umständlich, weil die in einem eigenen Thread laufen müsste, um den Hauptprozess nicht zu blockieren.

Nutze doch die Möglichenkeiten der Process-Klasse, und lasse dich per Event benachrichtigen, wenn etwas in die Standardausgabe geschrieben wurde. Das Ereignis heißt OutputDataReceived und ein Beispiel findest du in der MSDN-Dokumentation zu diesem Ereignis: http://msdn.microsoft.com/de-de/library/system.diagnostics.process.outputdatareceived.aspx

Gruß
MCoder
 

Neue Beiträge

Zurück