다음을 통해 공유


ProcessStartInfo.RedirectStandardInput 속성

정의

애플리케이션의 입력을 StandardInput 스트림에서 읽을지 여부를 나타내는 값을 가져오거나 설정합니다.

public:
 property bool RedirectStandardInput { bool get(); void set(bool value); };
public bool RedirectStandardInput { get; set; }
member this.RedirectStandardInput : bool with get, set
Public Property RedirectStandardInput As Boolean

속성 값

입력을true 에서 읽어야 하는 경우 StandardInput이고, 그러지 않으면 false입니다. 기본값은 false입니다.

예제

다음 예제에서는 프로세스의 스트림을 리디렉션하는 StandardInput 방법을 보여 줍니다. sort 명령 읽고 텍스트 입력을 정렬 하는 콘솔 애플리케이션입니다.

이 예제에서는 리디렉션된 입력을 사용하여 sort 명령을 시작합니다. 그런 다음 사용자에게 텍스트를 묻는 메시지를 표시하고 리디렉션된 StandardInput 스트림을 sort 통해 텍스트를 프로세스에 전달합니다. 결과는 sort 콘솔에서 사용자에게 표시됩니다.

#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Diagnostics;
using namespace System::ComponentModel;
int main()
{
   Console::WriteLine(  "Ready to sort one or more text lines..." );
   
   // Start the Sort.exe process with redirected input.
   // Use the sort command to sort the input text.
   Process^ myProcess = gcnew Process;
   if ( myProcess )
   {
      myProcess->StartInfo->FileName =  "Sort.exe";
      myProcess->StartInfo->UseShellExecute = false;
      myProcess->StartInfo->RedirectStandardInput = true;
      myProcess->Start();
      StreamWriter^ myStreamWriter = myProcess->StandardInput;
      if ( myStreamWriter )
      {
         
         // Prompt the user for input text lines to sort. 
         // Write each line to the StandardInput stream of
         // the sort command.
         String^ inputText;
         int numLines = 0;
         do
         {
            Console::WriteLine(  "Enter a line of text (or press the Enter key to stop):" );
            inputText = Console::ReadLine();
            if ( inputText && inputText->Length > 0 )
            {
               numLines++;
               myStreamWriter->WriteLine( inputText );
            }
         }
         while ( inputText && inputText->Length != 0 );
         
         // Write a report header to the console.
         if ( numLines > 0 )
         {
            Console::WriteLine(  " {0} sorted text line(s) ", numLines.ToString() );
            Console::WriteLine(  "------------------------" );
         }
         else
         {
            Console::WriteLine(  " No input was sorted" );
         }
         
         // End the input stream to the sort command.
         // When the stream closes, the sort command
         // writes the sorted text lines to the 
         // console.
         myStreamWriter->Close();
      }
      
      // Wait for the sort process to write the sorted text lines.
      myProcess->WaitForExit();
      myProcess->Close();
   }
}
using System;
using System.IO;
using System.Diagnostics;
using System.ComponentModel;

namespace ProcessStandardInputSample
{
    class StandardInputTest
    {
        static void Main()
        {
            Console.WriteLine("Ready to sort one or more text lines...");

            // Start the Sort.exe process with redirected input.
            // Use the sort command to sort the input text.
            using (Process myProcess = new Process())
            {
                myProcess.StartInfo.FileName = "Sort.exe";
                myProcess.StartInfo.UseShellExecute = false;
                myProcess.StartInfo.RedirectStandardInput = true;

                myProcess.Start();

                StreamWriter myStreamWriter = myProcess.StandardInput;

                // Prompt the user for input text lines to sort.
                // Write each line to the StandardInput stream of
                // the sort command.
                String inputText;
                int numLines = 0;
                do
                {
                    Console.WriteLine("Enter a line of text (or press the Enter key to stop):");

                    inputText = Console.ReadLine();
                    if (inputText.Length > 0)
                    {
                        numLines++;
                        myStreamWriter.WriteLine(inputText);
                    }
                } while (inputText.Length > 0);

                // Write a report header to the console.
                if (numLines > 0)
                {
                    Console.WriteLine($" {numLines} sorted text line(s) ");
                    Console.WriteLine("------------------------");
                }
                else
                {
                    Console.WriteLine(" No input was sorted");
                }

                // End the input stream to the sort command.
                // When the stream closes, the sort command
                // writes the sorted text lines to the
                // console.
                myStreamWriter.Close();

                // Wait for the sort process to write the sorted text lines.
                myProcess.WaitForExit();
            }
        }
    }
}

Imports System.IO
Imports System.Diagnostics
Imports System.ComponentModel

Namespace Process_StandardInput_Sample

    Class StandardInputTest

        Shared Sub Main()

            Console.WriteLine("Ready to sort one or more text lines...")

            ' Start the Sort.exe process with redirected input.
            ' Use the sort command to sort the input text.
            Using myProcess As New Process()

                myProcess.StartInfo.FileName = "Sort.exe"
                myProcess.StartInfo.UseShellExecute = False
                myProcess.StartInfo.RedirectStandardInput = True

                myProcess.Start()

                Dim myStreamWriter As StreamWriter = myProcess.StandardInput

                ' Prompt the user for input text lines to sort. 
                ' Write each line to the StandardInput stream of
                ' the sort command.
                Dim inputText As String
                Dim numLines As Integer = 0
                Do
                    Console.WriteLine("Enter a line of text (or press the Enter key to stop):")

                    inputText = Console.ReadLine()
                    If inputText.Length > 0 Then
                        numLines += 1
                        myStreamWriter.WriteLine(inputText)
                    End If
                Loop While inputText.Length <> 0


                ' Write a report header to the console.
                If numLines > 0 Then
                    Console.WriteLine($" {numLines} sorted text line(s) ")
                    Console.WriteLine("------------------------")
                Else
                    Console.WriteLine(" No input was sorted")
                End If

                ' End the input stream to the sort command.
                ' When the stream closes, the sort command
                ' writes the sorted text lines to the 
                ' console.
                myStreamWriter.Close()


                ' Wait for the sort process to write the sorted text lines.
                myProcess.WaitForExit()
            End Using

        End Sub
    End Class  'StandardInputTest
End Namespace 'Process_StandardInput_Sample

설명

Process 표준 입력 스트림(일반적으로 키보드)에서 입력 텍스트를 읽을 수 있습니다. 스트림을 StandardInput 리디렉션하여 프로그래밍 방식으로 프로세스의 입력을 지정할 수 있습니다. 예를 들어 키보드 입력을 사용 하는 대신 지정 된 파일의 내용에서 텍스트 또는 다른 애플리케이션에서 출력을 제공할 수 있습니다.

참고

false 로 설정 UseShellExecute 하려면 를 로 설정 RedirectStandardInputtrue해야 합니다. 그렇지 않으면 스트림에 쓰기가 StandardInput 예외를 throw합니다.

적용 대상

추가 정보