| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сделать на форме окно для консольного приложения? |
| Автор: Nicholas 30.11.2008, 13:03 | ||||||
| В общем у меня в цикле много раз запускается консольное приложение (конвертор), но не много окон, а прога ждет пока оно завершится потом продолжает цыкл, мне надо чтоб его окно запускалось внутри моей формы! Иначе по рабочему столу начинают прыгать окшки консольного приложения, то там то тут Нашел пример http://forum.vingrad.ru/topic-32298.html. Исходник примера http://forum.vingrad.ru/act-Attach/type/post/id-239269.html.
Что я пока не понял в примере, это то как окно появляется на форме и как оно таскается мышью... :( Вообще мне нажна процедура которая будет в своих параметрах иметь еще и GroupBox в котором будет работать окно консольного приложения. Сейчас я пользуюсь функцией которая запускает и ждет выполнения приложения:
Подскажите как ее переделать что было примерно так
Может ктонибудь предложит вариант проще??? |
| Автор: Letov 30.11.2008, 15:11 | ||
| Интересная задача. Я, например, тяжело представляю себе как запускать приложение внутри своей формы (как я понял - консоль должна появляться в GroupBox1). Есть другой интересный метод. Например, запускать скрытый консольный процесс, и, если надо, перехватывать вывод консоль, например, с помощью пайпов (Pipe) и выводить ее в Memo. В общем случает - смотри http://drkb.ru/. Там это есть.
Так лучше^^. |
| Автор: bems 30.11.2008, 18:23 |
| Думаю, лучше так: сначала вызываешь AllocConsole. Новый процесс создаешь не указывая флажки DETACHED_PROCESS, CREATE_NEW_CONSOLE, CREATE_NEW_PROCESS_GROUP. Новый процесс унаследует твою консоль, и вместо привязки каждой новой консоли к твоему окну, достаточно это сделать один раз для своей консоли. Для этого сначала получаешь хэндл консольного окна (это GetConsoleWindow в новых виндах и куча сомнительных трюков в старых - ищи по форуму), а потоми делаешь SetParent этому окну |
| Автор: Nicholas 3.12.2008, 15:29 | ||
Я без собранного во едино кода нифига не пойму :( |
| Автор: bems 3.12.2008, 20:25 | ||
ну вот тебе пример:
|
| Автор: Nicholas 4.12.2008, 04:56 |
| Нее, я все забыл... :( п.с. Спасибо за пример. |
| Автор: Nicholas 4.6.2011, 19:08 | ||
| Подскажите, как сделать, что бы консольное окно никак не реагировало ни на мышь, ни на клавиатуру? Т.е. надо, что оно просто выводило результаты работы, а главное никто эту работу не мог прервать. п.с. Убрал заголовок и запретил изменение размеров так:
|
| Автор: Nicholas 20.6.2011, 07:26 |
| Модераторы, можете тему перенести в ветку "Delphi: WinAPI и системное программирование" ? а то здесь она заглохнет судя по всему... |