C# コンソール アプリケーションでの入力ソースの決定
多くのコンソール アプリケーションでは、キーボード入力とファイルからリダイレクトされた入力を区別する必要があります。 これは、入力の起源に基づいてアプリケーションの動作を調整するために不可欠です。
最も効率的なアプローチ
入力リダイレクトを検出する最も効果的な方法は、P/Invoke を介して Windows FileType()
API 関数を使用することです。 次のヘルパー クラスは、このプロセスを簡素化します:
<code class="language-csharp">public static class ConsoleEx { public static bool IsInputRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); // P/Invoke declarations (omitted for brevity) }</code>
実装
リダイレクトされた入力の確認は簡単です:
<code class="language-csharp">bool isRedirected = ConsoleEx.IsInputRedirected;</code>
強化された .NET 4.5 機能
.NET 4.5 以降のバージョンには、この目的のための組み込み機能が含まれていることに注意することが重要です。 ヘルパー クラスは不要です。代わりに、
を使用してください。<code class="language-csharp">bool isRedirected = Console.IsInputRedirected;</code>
以上がC# で入力リダイレクト (キーボードとファイル) を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。