C#でOutputDebugString()をキャプチャする

C#でOutputDebugStringをキャプチャするコードを書いたので置いておきます。
SysinternalsのDebugViewのコア機能をC#で書き直した形です。

github.com

 

普段はDebugViewやVisual Studioをアタッチしているのですが、DebugViewよりも使いやすいUIを構築したかったり、コマンドラインツールに組み込みたかったりしたので用意しました。

あと、コードは.NET 6で書きましたが.NET Framework 4.6を使っているプロジェクトでもnullable関連を数か所書き換えればコンパイルできます。