Menguasai Pengesanan Pengalihan Input dalam Aplikasi Konsol C#
Banyak aplikasi konsol C# memerlukan gelagat berbeza bergantung pada sama ada input pengguna berasal daripada papan kekunci atau sumber diubah hala seperti fail. Panduan ini menyediakan penyelesaian yang mantap untuk mengesan pengalihan input.
Memahami Cabaran
Aplikasi konsol selalunya perlu menyesuaikan fungsinya berdasarkan sumber input. Menentukan sama ada input datang daripada papan kekunci atau fail luaran adalah kunci untuk mencapai kebolehsuaian ini.
Penyelesaian Berkesan
Kaedah yang paling boleh dipercayai menggunakan Windows FileType()
fungsi API melalui P/Invoke. Fungsi ini mengenal pasti jenis fail yang dikaitkan dengan pemegang fail. Kelas pembantu ConsoleEx
di bawah menunjukkan perkara ini:
<code class="language-csharp">using System; using System.Runtime.InteropServices; public static class ConsoleEx { public static bool IsOutputRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdout)); public static bool IsInputRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); public static bool IsErrorRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stderr)); // P/Invoke declarations: 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); }</code>
Aplikasi Praktikal
Untuk menyemak pengalihan masukan, hanya gunakan:
<code class="language-csharp">bool isInputRedirected = ConsoleEx.IsInputRedirected;</code>
Pendekatan .NET Moden
.NET Framework 4.5 dan versi yang lebih baru menawarkan sokongan terbina dalam untuk fungsi ini dalam kelas Console
. Hartanah IsInputRedirected
menyediakan penyelesaian langsung dan lebih mudah:
<code class="language-csharp">bool isInputRedirected = Console.IsInputRedirected;</code>
Dengan teknik ini, anda boleh mengesan pengalihan input dengan berkesan dan mencipta aplikasi konsol yang lebih fleksibel dan mantap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Pengalihan Input dalam Aplikasi Konsol C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!