Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan sama ada Input Aplikasi Konsol C# adalah daripada Papan Kekunci atau Fail?

Bagaimanakah Saya Boleh Menentukan sama ada Input Aplikasi Konsol C# adalah daripada Papan Kekunci atau Fail?

DDD
DDDasal
2025-01-12 17:12:43787semak imbas

How Can I Determine if a C# Console Application's Input is from the Keyboard or a File?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn