|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.05.2017, 20:02 | #1 |
Новичок
Джуниор
Регистрация: 08.05.2017
Сообщений: 16
|
Запуск консоли из GUI
Проблема следующая:
1. Имеется консоль C1.exe ( просто .exe-шник, без проекта ) Консоль не простая, правда... Может работать в 64-битной среде и использовать до 16 ядер процессора ( у меня как раз Windows 8 pro )... 2. Имеется проект ( с исходниками в C++Builder XE3 ), который готовит некое Windows-приложение W1.exe Что, собственно, хотелось бы реализовать: 1. Запуск консоли C1.exe из W1.exe ( например, при нажатии кнопки ) В более древних bcb4, bcb5 использовалось CreateProcess(...) 2. Доступ к вводу/выводу консоли из W1.exe Например, передать ( текст команды +/n ), подождать когда появится текст ответа конслоли и передать его в W1.exe ( например, в некий RichEdit1 ) 3. Возможен вариант, когда консоль может часами непрерывно выдавать текст... При этом "конец ответа" точно определить сложно ( или он наступит через неделю, скажем )... Можно ли в таком "экстремальном" случае все "свежие" символы из буфера консоли синхронно ( т.е. более-менее одновременно ) добавлять к текущему тексту RichEdit1 ?? Заранее благодарю, если кто-то внесёт ясность... P.S. В старых bcb была полная документация по Win32 API... Сейчас у меня C++Builder XE3 и я не нахожу в Help ничего похожего на Win64 API.. |
08.05.2017, 20:29 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
09.05.2017, 10:58 | #3 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 735
|
- там не CreateProcess использовалось, а использовалось:
Код:
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
09.05.2017, 11:14 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
В смысле "использовалось"? Это API ОС.
WinExec deprecated уже давно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
09.05.2017, 13:02 | #5 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 735
|
Ну запускать уже понятно чем. Для того, чтобы организовать обмен данными между приложениями нужно изучать SendMessage() и обмен сообщениями между приложениями, так называемые Windows-сообщения(WM_USER, например).
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
09.05.2017, 13:25 | #6 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 735
|
Также нужно знать такие слова, как:
Код:
1) WM_MyMessage - код сообщения, просто цифра, в том коде, где я смотрел это просто переопределенный WM_USER: Код:
Код:
2) TMessage - класс сообщения; 3) OnMyMessage - функция-обработчик события, которое реагирует на это сообщение (WM_MyMessage). Вот 1-ая строка обработчика этого события: Код:
Код:
Ну примерно вот так. Найдите себе какой-нибудь пример в Интернете и рализуйте его.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
09.05.2017, 13:54 | #7 |
Новичок
Джуниор
Регистрация: 08.05.2017
Сообщений: 16
|
...
Последний раз редактировалось COREYCO; 09.05.2017 в 14:59. |
09.05.2017, 13:58 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
А с чего вдруг оно должно было быть так воспринято?
Запуск это CreateProcess или ShellExecute. Если вам нужен вывод запущенного процесса, то после CreateProcess можно перенаправить.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 09.05.2017 в 14:00. |
09.05.2017, 14:02 | #9 | |
Новичок
Джуниор
Регистрация: 08.05.2017
Сообщений: 16
|
Цитата:
оба исходника, где можно прописать "сценарий" ) А тут одно из приложений консоль ( .exe безо всяких исходников ), для которого я не могу прописать сценарий взаимодействия с Windows-приложением ( здесь с исходниками всё в порядке - можно редактировать, компилировать и т.д. ) |
|
09.05.2017, 14:55 | #10 |
Новичок
Джуниор
Регистрация: 08.05.2017
Сообщений: 16
|
ShellExecute
( Form1->Handle, "open", "d:\\...\\C1.exe", NULL, NULL, SW_SHOWNORMAL ); Вот это нормально запустило консоль C1.exe из формы Form1... В окне консоли можно вручную вводить команды... Если C1.exe их понимает, то что-то выдаёт в ответ... Теперь осталось "научиться": 1. посылать команды из Form1 ( а не вручную ) 2. дублировать ответы C1.exe в неком Memo1 или RichEdit1 ( Form1/ W1.exe ) + анализировать их ( что уже немного уводит в сторону от темы )... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
запуск программы в консоли | deniscatch | Общие вопросы по Java, Java SE, Kotlin | 2 | 04.08.2014 23:38 |
Запуск и чтение данных из консоли | Random2 | C++ Builder | 0 | 26.02.2013 21:24 |
запуск сборки из консоли | sergio11 | C# (си шарп) | 2 | 01.02.2013 13:39 |
Запуск приложения из консоли | stpdqstns | Visual C++ | 4 | 04.11.2012 16:02 |
Запуск консоли и перенаправление вывода | ros.pro | Общие вопросы Delphi | 1 | 02.01.2012 18:49 |