Heim >Backend-Entwicklung >C++ >Wie kann ich die Befehlsausgabe in Echtzeit in einem Windows Forms-Steuerelement anzeigen?
Diese Anleitung zeigt, wie die Ausgabe von Echtzeit-Befehlsausgaben von CMD.exe
innerhalb eines Windows-Formulierungssteuerung erfasst und angezeigt wird.
Methode: Der Prozess umfasst die Ausführung eines Befehls und die Handhabung seiner Ausgabezeile für Zeile, wodurch ein Formularsteuerung dynamisch aktualisiert wird.
Schritte:
Befehlsdefinition: Geben Sie den Befehl und seine Argumente an. Diese werden an die Methoden Exec.Run()
oder Exec.GetOutput()
übergeben.
Delegateerstellung: Ein Delegierter wird erstellt, um jede Befehlsausgabe als Zeichenfolge zu empfangen. Dieser Delegierte fungiert als Rückruffunktion.
Befehl Ausführung: Der Befehl wird entweder Exec.Run()
(für die Hintergrundausführung) oder Exec.GetOutput()
ausgeführt (zum Abrufen der gesamten Ausgabe als Zeichenfolge). Entscheidend ist, dass Exec.Run()
den Delegierten als Parameter für die Streaming -Ausgabe verarbeitet. Der Parameter noshow
in Exec.Run()
sollte für die Hintergrundausführung auf true
eingestellt werden.
Ausgabemittel Anzeige: In der Methode des Delegaten:
txt.InvokeRequired
, verwenden Sie true
mit einem Invoke()
, um das Textfeld (MethodInvoker
) sicher aus dem richtigen Thread -Kontext zu aktualisieren. Dies verhindert die Ausnahmen von Kreuzungen. txt
txt.InvokeRequired
ist (dh der Delegierter befindet sich bereits im UI -Thread), aktualisieren Sie die false
Steuerung direkt. txt
Code Beispiel:
<code class="language-csharp">using Exec; using System.Windows.Forms; public partial class Form1 : Form { private void btnExecute_Click(object sender, EventArgs e) { // Access TextBox control (assuming it's named 'txtOutput') TextBox txt = txtOutput; // Replace txtOutput with your TextBox's name // Delegate to handle each line of output OutputHandler outputHandler = line => { if (txt.InvokeRequired) { txt.Invoke(new MethodInvoker(() => txt.AppendText(line))); } else { txt.AppendText(line); } }; // Execute command (replace with your command and path) Exec.Run(@"C:\Windows\System32\cmd.exe", "/c dir", null, outputHandler, true); // noshow = true for background execution } }</code>
Wichtige Überlegungen:
try-catch
AppendText
. Text
zuzuweisen.
) durch Ihre tatsächlichen Steuernamen zu ersetzen. txtOutput
Das obige ist der detaillierte Inhalt vonWie kann ich die Befehlsausgabe in Echtzeit in einem Windows Forms-Steuerelement anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!