首頁 >後端開發 >C++ >如何在 C# 中偵測重定向的控制台輸入?

如何在 C# 中偵測重定向的控制台輸入?

DDD
DDD原創
2025-01-12 17:02:42664瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn