Maison >développement back-end >C++ >Comment puis-je rediriger la sortie de la console vers une zone de texte Windows Forms ?
Capture de la sortie de la console dans une zone de texte Windows Forms à partir d'une application externe
Ce guide montre comment rediriger la sortie de la console d'un programme distinct vers une zone de texte dans votre application Windows Forms à l'aide des fonctionnalités de gestion des processus de .NET.
Étapes de mise en œuvre :
Process
objet pour représenter l'application console externe.StartInfo
pour spécifier le chemin du programme externe (FileName
), désactivez l'exécution du shell (UseShellExecute = false
) et activez la sortie standard et la redirection des erreurs (RedirectStandardOutput = true
, RedirectStandardError = true
). Activez également le déclenchement d’événements (EnableRaisingEvents = true
).OutputDataReceived
. Ce gestionnaire d'événements recevra le flux de sortie redirigé.Voici un exemple C# illustrant ce processus :
<code class="language-csharp">void Method() { var process = new Process(); process.StartInfo.FileName = @"C:\ConsoleApp.exe"; // Replace with your console app's path process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.EnableRaisingEvents = true; process.OutputDataReceived += Process_OutputDataReceived; process.Start(); process.BeginErrorReadLine(); process.BeginOutputReadLine(); } private void Process_OutputDataReceived(object sender, DataReceivedEventArgs e) { // Update the TextBox with the received data (e.Data) on the UI thread. if (e.Data != null) { this.BeginInvoke((MethodInvoker)delegate { this.textBox1.AppendText(e.Data + Environment.NewLine); // Assuming your TextBox is named textBox1 }); } }</code>
N'oubliez pas de remplacer "C:ConsoleApp.exe"
par le chemin réel vers votre application console externe. La méthode BeginInvoke
garantit que la TextBox est mise à jour en toute sécurité sur le thread de l'interface utilisateur, empêchant ainsi les exceptions de thread croisé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!