出力を表示し、F4が終了するのを待つコンソールアプリケーションを読み取るGUIアプリがありますが、次の方法でプロセスを起動できました。
p.StartInfo.FileName = "consoleapp.exe";
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.RedirectStandardInput = false;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = false;
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
p.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(ConsoleOutputHandler);
p.Start();
p.BeginOutputReadLine();
そして私はF4を使用して送ることができます:
PostMessage(p.MainWindowHandle, (uint)WM_KEYUP, (IntPtr) Keys.F4, (IntPtr) 0x3E0001 );
StandardOutputを次のようにリダイレクトするまで、すべてが正常に機能します。
p.StartInfo.RedirectStandardOutput = true;
そうすれば、PostMessageは引き続きイベントを送信します(Spy ++によってチェックされます)が、コンソールアプリはそれを認識しません。
「RedirectStandardInput」を変更しても、何の進展もありませんでした。
何かご意見は?