プロセスのコマンド入力を Process インスタンスの StandardInput メンバから読み取るかどうかを示す値を取得または設定します。このメンバを使用すると、入力を標準入力ストリーム (通常はキーボード) 以外のソースから読み取ることができます。たとえば、データをファイルから読み取ることができます。
Public Property RedirectStandardInput As Boolean
[C#]
public bool RedirectStandardInput {get; set;}
[C++]
public: __property bool get_RedirectStandardInput();public: __property void set_RedirectStandardInput(bool);
[JScript]
public function get RedirectStandardInput() : Boolean;public function set RedirectStandardInput(Boolean);
プロパティ値
入力を Process.StandardInput から読み取る場合は true 。それ以外の場合は false 。
解説
Process は、その標準入力ストリーム (通常はキーボード) から入力テキストを読み取ることができます。 StandardInput ストリームを使用すると、プロセスの入力をプログラムによって指定できます。たとえば、キーボード入力を使用せずに、指定したファイルの内容から入力を提供したり、別のプロセスからの出力を提供することができます。
メモ StartInfo. RedirectStandardInput プロパティを true に設定する場合は、 StartInfo. UseShellExecute プロパティを false に設定する必要があります。設定しない場合は、 StandardInput ストリームに書き込みを行うと例外がスローされます。
使用例
[Visual Basic, C#, C++] プロセスの StandardInput ストリームをリダイレクトする方法を次のコード例に示します。このコードは、リダイレクトされた入力を使用して sort コマンドを起動します。その後、ユーザーにテキストの入力を要求し、そのテキストをリダイレクトされた System.Diagnostics.ProcessStartInfo.StandardInput ストリームを通じて sort プロセスに渡します。 sort の結果はユーザーのコンソールに表示されます。
Imports System
Imports System.IO
Imports System.Diagnostics
Imports System.ComponentModel
Imports Microsoft.VisualBasic
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.
Dim 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(" {0} sorted text line(s) ", numLines)
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()
myProcess.Close()
End Sub 'Main
End Class 'StandardInputTest
End Namespace 'Process_StandardInput_Sample
[C#]
using System;
using System.IO;
using System.Diagnostics;
using System.ComponentModel;
namespace Process_StandardInput_Sample
{
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.
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(" {0} sorted text line(s) ", numLines);
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();
}
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Diagnostics;
using namespace System::ComponentModel;
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.
Process *myProcess = new 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();
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
ProcessStartInfo クラス | ProcessStartInfo メンバ | System.Diagnostics 名前空間 | UseShellExecute | StandardInput