タスクを実行するために別のプログラムを呼び出す必要がある Windows フォーム アプリケーションを開発しています。プログラムはコンソール アプリケーションであり、標準出力をコンソールからプログラムの TextBox にリダイレクトする必要があります。
アプリケーションからプログラムを実行するのに問題はありませんが、出力をアプリケーションにリダイレクトする方法がわかりません。イベントを使用してプログラムの実行中に出力をキャプチャする必要があります。
コンソール プログラムは、アプリケーションが停止し、テキストがランダムな間隔で常に変化するまで実行を停止することを意図していません。私がやろうとしているのは、単にコンソールからの出力をフックして、TextBox の更新に使用できるイベント ハンドラーをトリガーすることです。
プログラムのコーディングには C# を使用し、開発には .NET フレームワークを使用しています。元のアプリケーションは .NET プログラムではありません。
編集:これは、私がやろうとしていることのコード例です。最終的なアプリでは、Console.WriteLine をコードに置き換えて、TextBox を更新します。イベント ハンドラにブレークポイントを設定しようとしましたが、到達することさえできません。
void Method()
{
var p = new Process();
var path = @"C:\ConsoleApp.exe";
p.StartInfo.FileName = path;
p.StartInfo.UseShellExecute = false;
p.OutputDataReceived += p_OutputDataReceived;
p.Start();
}
static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(">>> {0}", e.Data);
}