Sending keystrokes to a console application

W

Wayne

I have a console application (ssh2.exe) that requires keystrokes to be sent
to it after activating.

I have worked that it needs to be started in it own thread, but capturing
the process and sending the keystrokes escapes me at the moment.

Is there any material online that describes the process of sending
keystrokes to a console app?
 
W

William Stacey [MVP]

You can redirect stdin so your can write strings to a stream and the console
will read it from std in like normal (i.e. type this.txt | myapp.exe".
 
W

Wayne

William Stacey said:
You can redirect stdin so your can write strings to a stream and the console
will read it from std in like normal (i.e. type this.txt | myapp.exe".

Do you have an example?
 
W

William Stacey [MVP]

Many examples in the .net help. Here is one at
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003OCT.1033/cpref/html/frlrfsystemdiagnos
ticsprocessclassstandardinputtopic.htm

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();

}
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top