#c_sharp #gui #console #execute
Добрый день. Столкнулся с такой проблемой, решил создать GUI для консольного приложения, запускаю его так. MyProc.StartInfo.FileName = filename; MyProc.StartInfo.Arguments = arguments; MyProc.StartInfo.UseShellExecute = false; MyProc.StartInfo.RedirectStandardOutput = true; MyProc.Start(); if (waitforexit) MyProc.WaitForExit(); Запускается приложение с ключом без проблем, но как передать этому приложению ещё одну команду? Запускать заново - не вариант, т.к приложение запускается таким образом cProgram.exe file_name И дальше идет выполнение команд внутри cProgram (cProgram) write_some_comand Как быть?
Ответы
Ответ 1
Обмениваться с приложением через пайп. Вот пример (delphi): консольный редирект в обе стороны. Еще лучше пример тут: Creating a Child Process with Redirected Input and Output. Но это WinAPI.Ответ 2
Послать в консоль команду: myProc.StandardInput.WriteLine("write_some_comand\r\n"); myProc.StandardInput.Flush(); Можно также создать процесс, не показывая самой консоли: myProc.StartInfo.CreateNoWindow = true; myProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;Ответ 3
Что-то мне подсказывает winapi (sendmessage, postmessage). Общий алгоритм таков: ищете название окна (тоже winapi FindWindow), получаете handle окна и по это handle отправляете message (можно стандартные, WM_CLOSE, etc.). Или же делаете свой, кастомный message-list-parameters.
Комментариев нет:
Отправить комментарий