Heim > Backend-Entwicklung > C++ > Wie kann ich feststellen, ob die Eingabe einer C#-Konsolenanwendung über die Tastatur oder eine Datei erfolgt?

Wie kann ich feststellen, ob die Eingabe einer C#-Konsolenanwendung über die Tastatur oder eine Datei erfolgt?

DDD
Freigeben: 2025-01-12 17:12:43
Original
786 Leute haben es durchsucht

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

Unterscheidung von Tastatureingaben und Dateiumleitung in C#-Konsolen-Apps

In diesem Artikel wird gezeigt, wie Sie feststellen können, ob die Eingabe einer C#-Konsolenanwendung von der Tastatur oder einer umgeleiteten Datei stammt. Diese Fähigkeit ist von entscheidender Bedeutung für die Erstellung von Anwendungen, die ihr Verhalten basierend auf der Eingabequelle anpassen.

Methode mit P/Invoke

Die Windows-API-Funktion FileType() bietet eine Lösung. Diese Funktionalität ist in der folgenden C#-Hilfsklasse verpackt:

<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>
Nach dem Login kopieren

Umsetzung

Um nach umgeleiteten Eingaben zu suchen, verwenden Sie einfach:

<code class="language-csharp">bool isRedirected = ConsoleEx.IsInputRedirected;</code>
Nach dem Login kopieren

Alternative: .NET 4.5 und höher

Für .NET Framework 4.5 und spätere Versionen stellt die Klasse Console integrierte Eigenschaften bereit:

  • Console.IsInputRedirected
  • Console.IsOutputRedirected
  • Console.IsErrorRedirected

Diese Eigenschaften bieten einen einfacheren Ansatz zur Erkennung der Eingabeumleitung. Wählen Sie die Methode, die am besten zur .NET Framework-Version Ihres Projekts passt.

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob die Eingabe einer C#-Konsolenanwendung über die Tastatur oder eine Datei erfolgt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage