NET StandardInput - Problem
Hallo zusammen,
ich starte mit meinem Programm eine .exe (CMD) und lese den
Outputstream in einer Richtextbox aus. Funktioniert einwandfrei.
Problem:
Das Konsolenprogramm läuft mehrere Stunden. Wenn ich eine Statusabfrage machen möchte, dann
kann ich in der CMD die Taste "t" drücken und der neuste Status wird angezeigt.
Da mein Programm die CMD natürlich versteckt ausführt, kann ich "t" natürlich nicht drücken.
Jetzt habe ich versucht über "StandardInput" den Befehl zusenden, aber es funtkioniert nur wenn der Prozess bereits beendet
wurde. Im laufenden Prozess den Status mit "t" zu aktualisieren funktioniert nicht.
Hat jemand eine Idee wie ich es hinbekomme?
Danke und schöne Feiertage
Claudi
ich starte mit meinem Programm eine .exe (CMD) und lese den
Outputstream in einer Richtextbox aus. Funktioniert einwandfrei.
Problem:
Das Konsolenprogramm läuft mehrere Stunden. Wenn ich eine Statusabfrage machen möchte, dann
kann ich in der CMD die Taste "t" drücken und der neuste Status wird angezeigt.
Da mein Programm die CMD natürlich versteckt ausführt, kann ich "t" natürlich nicht drücken.
Jetzt habe ich versucht über "StandardInput" den Befehl zusenden, aber es funtkioniert nur wenn der Prozess bereits beendet
wurde. Im laufenden Prozess den Status mit "t" zu aktualisieren funktioniert nicht.
Hat jemand eine Idee wie ich es hinbekomme?
Danke und schöne Feiertage
Claudi
Private Sub start()
_Process2 = New Process With {.EnableRaisingEvents = True}
With _Process2.StartInfo
.CreateNoWindow = True
.UseShellExecute = False
.Verb = "runas"
.FileName = "cmd"
.Arguments = ("/k " & TxbCommand.Text)
.WorkingDirectory = vari.Folder
.RedirectStandardOutput = True
.RedirectStandardInput = True
End With
_Process2.Start()
_Process2.BeginOutputReadLine()
End Sub
Private Sub _Process2_OutputDataReceived(sender As Object, e As DataReceivedEventArgs) Handles _Process2.OutputDataReceived
BeginInvoke(Sub() OutputData(e.Data))
End Sub
Private Sub OutputData(txt As String)
RichTextBox1.AppendText(txt & vbNewLine)
RichTextBox1.Select(RichTextBox1.TextLength, 0)
RichTextBox1.ScrollToCaret()
End Sub
Private Sub btnStatus_Click(sender As Object, e As EventArgs) Handles btnStatus.Click
_Process2.StandardInput.WriteLine("t")
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1655409267
Url: https://administrator.de/contentid/1655409267
Ausgedruckt am: 26.11.2024 um 09:11 Uhr
1 Kommentar
Hallo,
Gruß,
Peter
Zitat von @Hatschi1:
Da mein Programm die CMD natürlich versteckt ausführt, kann ich "t" natürlich nicht drücken.
Warum? Blockiert dein Verstecktes Programm (die .exe CMD) denn auch deine Tastatur? oder warum kannst du kein "t" mehr drücken? Wie läuft es denn sonst wenn es mal funktioniert?Da mein Programm die CMD natürlich versteckt ausführt, kann ich "t" natürlich nicht drücken.
Jetzt habe ich versucht über "StandardInput" den Befehl zusenden, aber es funtkioniert nur wenn der Prozess bereits beendet
Welcher Prozess muss schon beendet sein? Dein Konsolenfenster?Im laufenden Prozess den Status mit "t" zu aktualisieren funktioniert nicht.
Hast du schon dargelegt.Hat jemand eine Idee wie ich es hinbekomme?
Dein Konsolenfenster nicht verstecken uns es dem Fokus geben. Dann klappt auch deine Tastatur mit "t" wieder.Gruß,
Peter