首页 > 后端开发 > C++ > 如何在 C# 中检测重定向的控制台输入?

如何在 C# 中检测重定向的控制台输入?

DDD
发布: 2025-01-12 17:02:42
原创
700 人浏览过

How Can I Detect Redirected Console Input in C#?

确定 C# 应用程序中的重定向控制台输入

控制台应用程序严重依赖输入/输出操作。 然而,这种输入的来源——无论是键盘还是重定向流(如文件)——都可以极大地改变应用程序的行为。 本文演示了如何在 C# 中有效检测重定向的控制台输入。

检查重定向

最直接的方法是使用 FileType() 函数。 辅助类简化了此检查:

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

实施

要使用助手,只需调用:

<code class="language-csharp">bool isRedirected = ConsoleHelper.IsInputRedirected();</code>
登录后复制

true 结果表示输入来自键盘以外的源(例如文件)。

底层原生方法

帮助程序利用这些 Win32 API 函数:

  • FileType:枚举文件类型(未知、磁盘、字符、管道)。
  • StdHandle:代表标准句柄(Stdin、Stdout、Stderr)。
  • GetFileType:检索给定句柄的类型。
  • GetStdHandle:获取标准设备的句柄。

.NET 4.5 及更高版本的简化

.NET Framework 4.5及更高版本提供了内置的、更简洁的方法:

<code class="language-csharp">bool isRedirected = Console.IsInputRedirected;</code>
登录后复制

这会直接返回一个布尔值,指示重定向状态。

通过采用这些技术,开发人员可以构建强大的控制台应用程序,根据输入源调整其功能,从而增强用户体验和应用程序灵活性。

以上是如何在 C# 中检测重定向的控制台输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板