Maison >développement back-end >C++ >Comment puis-je déterminer si l'entrée d'une application console C# provient du clavier ou d'un fichier ?

Comment puis-je déterminer si l'entrée d'une application console C# provient du clavier ou d'un fichier ?

DDD
DDDoriginal
2025-01-12 17:12:43826parcourir

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

Distinguer la saisie au clavier de la redirection de fichiers dans les applications de console C#

Cet article montre comment déterminer si l'entrée d'une application console C# provient du clavier ou d'un fichier redirigé. Cette capacité est vitale pour créer des applications qui adaptent leur comportement en fonction de la source d'entrée.

Méthode utilisant P/Invoke

La fonction API Windows FileType() propose une solution. Cette fonctionnalité est enveloppée dans la classe d'assistance C# suivante :

<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>

Mise en œuvre

Pour vérifier les entrées redirigées, utilisez simplement :

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

Alternative : .NET 4.5 et versions ultérieures

Pour .NET Framework 4.5 et versions ultérieures, la classe Console fournit des propriétés intégrées :

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

Ces propriétés offrent une approche plus simple pour détecter la redirection d'entrée. Choisissez la méthode la mieux adaptée à la version du framework .NET de votre projet.

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