Я ищу способ записи в консоль другого процесса, используя WinApi, без перенаправления стандартного ввода процесса.
По сути, мое приложение (написанное на C #) является оболочкой для другого консольного приложения.
Это стороннее приложение принимает пользовательские команды в своей консоли. Мое приложение-оболочка должно запустить его и написать такие команды в консоли. Тем не менее, я ограничен в перенаправлении стандартного потока ввода, потому что это вызывает сбой этого стороннего приложения.
Поэтому я ищу решение, использующее WinAPI (или другой способ) для решения этой проблемы.
Вот краткая часть кода (надеюсь, уместно изобразить то, что я пытаюсь сделать):
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = path
,Arguments = string.Join(" ", Args)
,UseShellExecute = false
,CreateNoWindow = true
,RedirectStandardOutput = true
,RedirectStandardError = true
//,RedirectStandardInput = true //This leads the process to crash!
};
Process myProcess = new Process
{
StartInfo = startInfo
};
myProcess.Start();
/*...*/
public void SendInput(string input)
{
//TODO: see how to send input to process' console
int result = SendMessage(myProcess.Handle, 0x000C, 0, input + '\n'); // Not working :(
}