Maison > développement back-end > C++ > Comment puis-je détecter la redirection d'entrée dans les applications console C# ?

Comment puis-je détecter la redirection d'entrée dans les applications console C# ?

DDD
Libérer: 2025-01-12 17:01:47
original
175 Les gens l'ont consulté

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

Maîtriser la détection de redirection d'entrée dans les applications de console C#

De nombreuses applications console C# nécessitent des comportements différents selon que la saisie utilisateur provient du clavier ou d'une source redirigée comme un fichier. Ce guide fournit une solution robuste pour détecter la redirection d'entrée.

Comprendre le défi

Les applications console doivent souvent adapter leurs fonctionnalités en fonction de la source de l'entrée. Déterminer si la saisie provient du clavier ou d'un fichier externe est la clé pour parvenir à cette adaptabilité.

Solution efficace

La méthode la plus fiable utilise la fonction API Windows FileType() via P/Invoke. Cette fonction identifie le type de fichier associé à un descripteur de fichier. La classe d'assistance ConsoleEx ci-dessous le démontre :

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

Application pratique

Pour vérifier la redirection des entrées, utilisez simplement :

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

Approche .NET moderne

.NET Framework 4.5 et versions ultérieures offrent une prise en charge intégrée de cette fonctionnalité au sein de la classe Console. La propriété IsInputRedirected offre une solution directe et plus simple :

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

Grâce à ces techniques, vous pouvez détecter efficacement la redirection d'entrée et créer des applications de console plus flexibles et plus robustes.

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