У меня есть приложение с графическим интерфейсом, которое читает консольное приложение, которое показывает вывод и ждет выхода F4, мне удалось запустить процесс с помощью:
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» не дало никаких результатов.
Какие-нибудь мысли?