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

Bagaimanakah Saya Boleh Mengesan Pengalihan Input dalam Aplikasi Konsol C#?

DDD
Lepaskan: 2025-01-12 17:01:47
asal
175 orang telah melayarinya

How Can I Detect Input Redirection in C# Console Applications?

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>
Salin selepas log masuk

Aplikasi Praktikal

Untuk menyemak pengalihan masukan, hanya gunakan:

<code class="language-csharp">bool isInputRedirected = ConsoleEx.IsInputRedirected;</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan