C# アプリケーションでリダイレクトされたコンソール入力を決定する
コンソール アプリケーションは入出力操作に大きく依存します。 ただし、この入力のソース (キーボードであろうと、リダイレクトされたストリーム (ファイルなど) であろうと) は、アプリケーションの動作を劇的に変える可能性があります。 この記事では、C# でリダイレクトされたコンソール入力を効果的に検出する方法を説明します。
リダイレクトを確認しています
最も簡単な方法は、FileType()
関数を使用します。 ヘルパー クラスはこのチェックを簡素化します:
<code class="language-csharp">public static class ConsoleHelper { public static bool IsInputRedirected() { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); } }</code>
実装
ヘルパーを使用するには、次のように呼び出します:
<code class="language-csharp">bool isRedirected = ConsoleHelper.IsInputRedirected();</code>
true
の結果は、入力がキーボード以外のソース (ファイルなど) から行われたことを示します。
基礎となるネイティブ メソッド
ヘルパーは次の Win32 API 関数を利用します:
FileType
: ファイル タイプ (Unknown、Disk、Char、Pipe) を列挙します。StdHandle
: 標準ハンドル (Stdin、Stdout、Stderr) を表します。GetFileType
: 指定されたハンドルのタイプを取得します。GetStdHandle
: 標準デバイスへのハンドルを取得します。.NET 4.5 以降の簡素化
.NET Framework 4.5 以降のバージョンでは、より簡潔な組み込みメソッドが提供されています。
<code class="language-csharp">bool isRedirected = Console.IsInputRedirected;</code>
これは、リダイレクト ステータスを示すブール値を直接返します。
これらの技術を採用することで、開発者は入力ソースに基づいて機能を適応させる堅牢なコンソール アプリケーションを構築し、ユーザー エクスペリエンスとアプリケーションの柔軟性を向上させることができます。
以上がC# でリダイレクトされたコンソール入力を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。