C# 콘솔 앱의 파일 리디렉션과 키보드 입력 구별
이 문서에서는 C# 콘솔 애플리케이션의 입력이 키보드에서 발생하는지 아니면 리디렉션된 파일에서 발생하는지 확인하는 방법을 보여줍니다. 이 기능은 입력 소스에 따라 동작을 조정하는 애플리케이션을 만드는 데 필수적입니다.
P/Invoke를 이용한 방법
Windows API 기능FileType()
이 솔루션을 제공합니다. 이 기능은 다음 C# 도우미 클래스에 래핑되어 있습니다.
<code class="language-csharp">public static class ConsoleEx { 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); public static bool IsInputRedirected { get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); } } }</code>
구현
리디렉션된 입력을 확인하려면 다음을 사용하세요.
<code class="language-csharp">bool isRedirected = ConsoleEx.IsInputRedirected;</code>
대안: .NET 4.5 이상
.NET Framework 4.5 이상 버전의 경우 Console
클래스는 기본 제공 속성을 제공합니다.
Console.IsInputRedirected
Console.IsOutputRedirected
Console.IsErrorRedirected
이러한 속성은 입력 리디렉션을 감지하는 보다 간단한 접근 방식을 제공합니다. 프로젝트의 .NET Framework 버전에 가장 적합한 방법을 선택하세요.
위 내용은 C# 콘솔 응용 프로그램의 입력이 키보드에서 오는지 아니면 파일에서 오는지 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!