我有2個應用程序時,允許C#應用程序的StandardInput的重定向,A & B.做 「Console.ReadKey」
- 一流程內呼叫B。
- b執行一些東西像Console.WriteLine和到Console.ReadLine
由於這個MSDN Article,我莫名其妙地管理重定向B的輸出,並養活它的輸入,以及。
我不設法做,是擁有B中工作Console.ReadKey功能。我做了一個try catch塊角落找尋這個功能,我得到這個錯誤信息:
無法讀取密鑰時,無論是應用程序沒有控制檯時,或控制檯輸入已經從一個文件重定向。嘗試Console.Read
事實是,我必須使用Console.ReadKey,所以我需要找到一種方法,使其工作...任何想法?
下面是甲
代碼在主功能的有用的部分:
Process P2 = new Process();
P2.StartInfo.FileName = Environment.CurrentDirectory + "\\Main2.exe";
P2.StartInfo.UseShellExecute = false;
P2.StartInfo.RedirectStandardOutput = true;
P2.OutputDataReceived += new DataReceivedEventHandler(WriteOutput);
P2.StartInfo.RedirectStandardInput = true;
P2.Start();
StreamWriter ExeInput = P2.StandardInput;
P2.BeginOutputReadLine();
ConsoleKeyInfo KeyPressed;
do
{
KeyPressed = Console.ReadKey();
if(KeyPressed.Key == ConsoleKey.Enter)
{
Console.WriteLine();
ExeInput.Write("\n");
}
else
ExeInput.Write(KeyPressed.KeyChar);
} while (!P2.HasExited);
的處理程序outputdatareceived:
private static void WriteOutput(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
Console.WriteLine(outLine.Data);
}
}
試着看看這篇文章對你有用:http://www.codeproject.com/KB/dialog/less_command.aspx。實際上,它不使用'Process'類,但是在做這種事情時顯示了一種調用Console.ReadKey()的方法。 –
你的問題似乎要求一個解決方案,違反了dcoumented約束。您不能使用ReadKey。文件說明如此。繼續前進一個可行的解決方案。 –