C# コンソール アプリでのキーボード入力とファイル リダイレクトの区別
この記事では、C# コンソール アプリケーションの入力がキーボードからのものなのか、リダイレクトされたファイルからのものなのかを判断する方法を説明します。 この機能は、入力ソースに基づいて動作を適応させるアプリケーションを作成するために不可欠です。
P/Invoke を使用したメソッド
Windows API 関数 FileType()
は解決策を提供します。 この機能は、次の C# ヘルパー クラスでラップされています:
<code class="language-csharp">public static class ConsoleEx { private enum FileType { Unknown, Disk, Char, Pipe }; private enum StdHandle { Stdin = -10, Stdout = -11, Stderr = -12 }; [DllImport("kernel32.dll")] private static extern FileType GetFileType(IntPtr hdl); [DllImport("kernel32.dll")] private static extern IntPtr GetStdHandle(StdHandle std); public static bool IsInputRedirected { get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); } } }</code>
実装
リダイレクトされた入力を確認するには、単に次を使用します:
<code class="language-csharp">bool isRedirected = ConsoleEx.IsInputRedirected;</code>
代替: .NET 4.5 以降
.NET Framework 4.5 以降のバージョンの場合、Console
クラスは組み込みプロパティを提供します。
Console.IsInputRedirected
Console.IsOutputRedirected
Console.IsErrorRedirected
これらのプロパティは、入力リダイレクトを検出するためのより簡単なアプローチを提供します。 プロジェクトの .NET Framework バージョンに最適な方法を選択してください。
以上がC# コンソール アプリケーションの入力がキーボードからのものなのか、ファイルからのものなのかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。