Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

GUI для консольного приложения (выполнение команд после запуска)

#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.

Комментариев нет:

Отправить комментарий