Maison >développement back-end >C++ >Comment puis-je détecter les entrées de console redirigées en C# ?

Comment puis-je détecter les entrées de console redirigées en C# ?

DDD
DDDoriginal
2025-01-12 17:02:42664parcourir

How Can I Detect Redirected Console Input in C#?

Détermination de l'entrée de console redirigée dans les applications C#

Les applications console s'appuient fortement sur les opérations d'entrée/sortie. Cependant, la source de cette entrée, qu'il s'agisse d'un clavier ou d'un flux redirigé (comme un fichier), peut modifier considérablement le comportement de l'application. Cet article montre comment détecter efficacement les entrées de console redirigées en C#.

Vérification de la redirection

La méthode la plus simple utilise la fonction FileType(). Une classe d'assistance simplifie cette vérification :

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

Mise en œuvre

Pour utiliser l'assistant, appelez simplement :

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

Un résultat true indique que l'entrée provient d'une source autre que le clavier (par exemple, un fichier).

Méthodes natives sous-jacentes

L'assistant utilise ces fonctions de l'API Win32 :

  • FileType : Énumère les types de fichiers (Inconnu, Disque, Char, Pipe).
  • StdHandle : Représente les poignées standard (Stdin, Stdout, Stderr).
  • GetFileType : Récupère le type d'un handle donné.
  • GetStdHandle : obtient un identifiant pour un appareil standard.

Simplification de .NET 4.5 et versions ultérieures

.NET Framework 4.5 et versions ultérieures fournissent une méthode intégrée plus concise :

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

Cela renvoie directement un booléen indiquant l'état de redirection.

En employant ces techniques, les développeurs peuvent créer des applications console robustes qui adaptent leurs fonctionnalités en fonction de la source d'entrée, améliorant ainsi l'expérience utilisateur et la flexibilité des applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn