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
Libérer: 2025-01-12 17:12:43
original
784 Les gens l'ont consulté

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>
Copier après la connexion

Mise en œuvre

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

<code class="language-csharp">bool isRedirected = ConsoleEx.IsInputRedirected;</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal