ホームページ >バックエンド開発 >C++ >コンソール出力を Windows フォーム アプリケーションの TextBox にリダイレクトするにはどうすればよいですか?

コンソール出力を Windows フォーム アプリケーションの TextBox にリダイレクトするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-19 01:01:12151ブラウズ

How to Redirect Console Output to a TextBox in a Windows Forms Application?

外部プログラムのコンソール出力をテキスト ボックスにリダイレクトします

Windows フォーム アプリケーションを作成するとき、外部コンソール プログラムを実行し、出力をプログラム内のテキスト ボックスにリダイレクトしたい場合があります。これを実現するには、次の手順に従います:

コンソール出力を取得

まず、実行する外部プログラムを表す Process オブジェクトを作成します。

<code class="language-csharp">var p = new Process();
var path = @"C:\ConsoleApp.exe";

p.StartInfo.FileName = path;
p.StartInfo.UseShellExecute = false;</code>

標準出力をコンソールからテキスト ボックスにリダイレクトするには、OutputDataReceived イベント ハンドラーを設定します。

<code class="language-csharp">p.OutputDataReceived += p_OutputDataReceived;</code>

コンソール出力イベント処理

OutputDataReceived イベント ハンドラーでは、コンソール プログラムからの出力を処理および操作できます。コード例では、これは出力をコンソールに書き込むことによって行われます。 Console.WriteLine をテキスト ボックスを更新するコードに置き換えます。

<code class="language-csharp">static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Console.WriteLine(">>> {0}", e.Data); // 将此行替换为更新文本框的代码
}</code>

代替手段

標準出力とエラー出力の両方を処理する別の方法:

<code class="language-csharp">void RunWithRedirect(string cmdPath)
{
    var proc = new Process();
    proc.StartInfo.FileName = cmdPath;

    // 设置输出重定向
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardError = true;    
    proc.EnableRaisingEvents = true;
    proc.StartInfo.CreateNoWindow = true;
    // 请参见下面的输出处理程序
    proc.ErrorDataReceived += proc_DataReceived;
    proc.OutputDataReceived += proc_DataReceived;

    proc.Start();

    proc.BeginErrorReadLine();
    proc.BeginOutputReadLine();

    proc.WaitForExit();
}

void proc_DataReceived(object sender, DataReceivedEventArgs e)
{
    // 输出将在字符串 e.Data 中
    // 将此行替换为更新文本框的代码
}</code>

// 将此行替换为更新文本框的代码 コメント セクションは、特定のテキスト ボックス コントロール名と更新方法に基づいて変更する必要があることに注意してください。たとえば、テキスト ボックス名が textBox1 の場合、次のコードを使用してテキスト ボックスの内容を更新できます:

<code class="language-csharp">textBox1.AppendText(e.Data + Environment.NewLine);</code>

これにより、受信したデータがテキスト ボックスに追加され、データの各行の後に改行文字が追加されます。 RunWithRedirect を呼び出すか、OutputDataReceived イベント ハンドラーを設定する前に、テキスト ボックスが作成され、フォームに追加されていることを必ず確認してください。

以上がコンソール出力を Windows フォーム アプリケーションの TextBox にリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。