如何检测Console.In(stdin)是否已重定向?

如何检测Console.In(stdin)是否已重定向?,第1张

如何检测Console.In(stdin)是否已重定向?

您可以通过调用Windows FileType()API函数来查找。这是一个帮助器类:

using System;using System.Runtime.InteropServices;public static class ConsoleEx {    public static bool IsOutputRedirected {        get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdout)); }    }    public static bool IsInputRedirected {        get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); }    }    public static bool IsErrorRedirected {        get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stderr)); }    }    // P/Invoke:    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);}

用法:

bool inputRedirected = ConsoleEx.IsInputRedirected;

更新:这些方法添加到.NET 4.5中的Console类中。没有署名,我可能会添加:(只需使用相应的方法而不是此帮助器类。

https://msdn.microsoft.com/zh-
CN/library/system.console.isoutputredirected.aspx



https://msdn.microsoft.com/en-
us/library/system.console.isinputredirected.aspx
https://
msdn.microsoft.com/zh-
CN/library/system.console.iserrorredirected.aspx



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5045079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存