Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengesan Input Konsol Diubah Arah dalam C#?

Bagaimanakah Saya Boleh Mengesan Input Konsol Diubah Arah dalam C#?

DDD
DDDasal
2025-01-12 17:02:42663semak imbas

How Can I Detect Redirected Console Input in C#?

Menentukan Input Konsol Diubah Hala dalam Aplikasi C#

Aplikasi konsol sangat bergantung pada operasi input/output. Walau bagaimanapun, sumber input ini—sama ada papan kekunci atau strim diubah hala (seperti fail)—boleh mengubah gelagat aplikasi secara mendadak. Artikel ini menunjukkan cara mengesan input konsol diubah hala dalam C# dengan berkesan.

Menyemak Ubah Hala

Kaedah yang paling mudah menggunakan fungsi FileType(). Kelas pembantu memudahkan semakan ini:

<code class="language-csharp">public static class ConsoleHelper {
    public static bool IsInputRedirected() {
        return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin));
    }
}</code>

Pelaksanaan

Untuk menggunakan pembantu, hanya hubungi:

<code class="language-csharp">bool isRedirected = ConsoleHelper.IsInputRedirected();</code>

Hasil true menunjukkan input berasal daripada sumber selain papan kekunci (cth., fail).

Kaedah Asli yang Berasaskan

Pembantu menggunakan fungsi API Win32 ini:

  • FileType: Menghitung jenis fail (Tidak diketahui, Cakera, Char, Paip).
  • StdHandle: Mewakili pemegang standard (Stdin, Stdout, Stderr).
  • GetFileType: Dapatkan semula jenis pemegang yang diberikan.
  • GetStdHandle: Mendapat pemegang ke peranti standard.

.NET 4.5 dan Penyederhanaan Kemudian

.NET Framework 4.5 dan versi yang lebih baru menyediakan kaedah terbina dalam yang lebih ringkas:

<code class="language-csharp">bool isRedirected = Console.IsInputRedirected;</code>

Ini mengembalikan secara langsung boolean yang menunjukkan status ubah hala.

Dengan menggunakan teknik ini, pembangun boleh membina aplikasi konsol yang mantap yang menyesuaikan fungsi mereka berdasarkan sumber input, meningkatkan pengalaman pengguna dan fleksibiliti aplikasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Input Konsol Diubah Arah dalam C#?. 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