#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.
Комментариев нет:
Отправить комментарий