ホームページ >バックエンド開発 >C++ >C# でリダイレクトされたコンソール入力を検出するにはどうすればよいですか?

C# でリダイレクトされたコンソール入力を検出するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-12 17:02:42663ブラウズ

How Can I Detect Redirected Console Input in C#?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。