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

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

DDD
發布: 2025-01-12 17:02:42
原創
663 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板