hatschi1
Goto Top

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

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

Content-ID: 1655409267

Url: https://administrator.de/contentid/1655409267

Ausgedruckt am: 26.11.2024 um 09:11 Uhr

Pjordorf
Pjordorf 24.12.2021 um 15:41:40 Uhr
Goto Top
Hallo,

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?

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