Membezakan Input Papan Kekunci daripada Ubah Arah Fail dalam Apl Konsol C#
Artikel ini menunjukkan cara untuk menentukan sama ada input aplikasi konsol C# berasal daripada papan kekunci atau fail diubah hala. Keupayaan ini penting untuk mencipta aplikasi yang menyesuaikan tingkah laku mereka berdasarkan sumber input.
Kaedah Menggunakan P/Invoke
Fungsi Windows API FileType()
menawarkan penyelesaian. Fungsi ini dibungkus dalam kelas pembantu C# berikut:
<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>
Pelaksanaan
Untuk menyemak input diubah hala, hanya gunakan:
<code class="language-csharp">bool isRedirected = ConsoleEx.IsInputRedirected;</code>
Alternatif: .NET 4.5 dan Kemudian
Untuk .NET Framework 4.5 dan versi yang lebih baru, kelas Console
menyediakan sifat terbina dalam:
Console.IsInputRedirected
Console.IsOutputRedirected
Console.IsErrorRedirected
Sifat ini menawarkan pendekatan yang lebih mudah untuk mengesan pengalihan input. Pilih kaedah yang paling sesuai dengan versi rangka kerja .NET projek anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan sama ada Input Aplikasi Konsol C# adalah daripada Papan Kekunci atau Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!