1

Visual Studio 出力ウィンドウ (これが標準出力であると仮定) にステータスを出力するプログラムから呼び出す DLL があり、実行時にその出力をキャプチャしたいと考えています。

これを行う方法の例はすべて、Process を使用して外部アプリまたはコンソール アプリを起動し、Process インスタンスから StandardOutput をキャプチャすることを前提としています。しかし、この場合、プログラムは DLL を直接呼び出します。余分なプロセスを開始するわけではありません。

プログラムが DLL を呼び出している間、標準出力に出力された内容を読み取り、デバッグ用にログに記録し、DLL が失敗した場合はプログラムを終了したいと考えています。DLL 呼び出しが戻ると、プログラムは正常に続行するはずです。

他のスレッドが DLL 呼び出しを行っているときに、DLL 出力を処理するために別のスレッドが必要であることはわかっています。そもそも出力をキャプチャする方法がわかりません。

4

1 に答える 1

2

プログラムはConsole.SetOut、標準出力ストリームを独自の実装に置き換えるために呼び出すことができます。

これにより、必要に応じて標準出力をトラップできるようになります。DLL が出力を書き込む方法によっては、標準エラー ストリームを置き換える必要がある場合もあります。

于 2013-09-25T17:15:29.033 に答える