![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск внешнего приложения внутри формы.
Василий © (2006-06-15 06:39:00)Здравствуйте, мастера.
Вот такой вопрос возник.
Есть программа, работающая под DOS и мне необходимо ее запустить из моего приложения. Фунции ShellExecute, Winexec запускают его во внешнем окне. А мне бы хотелось чтобы запускалась на главной моей форме (скажем на форму кидаю panel1 со своими размерами, а программа "запускается" в области данной панели.
Не подскажите как это сделать.
Василий (2006-06-24 07:58:00) [1]>Elen © (23.06.06 16:39) [16]
>Если известен заголовок окна или процесса, то его легко отловить скажем >через EnumWindow, EnumProcess.
Заголовок окна, это то что на написано на "составной части формы", типа "c:\mustang\winstart.bat cmd.exe" иди что-то другое.
Спасибо. Прочитаю про эти функции.
> Например вести справочник DOS программ и как только запустился >процесс с именем указанным в справочнике делать то-то
>Другой вариант : Юзер скорее всего будет по окну елозить мышкой когда >оно открыто - Ставим глобальный хук на мышку и отлавливаем по >получаемым в хуке координатам окно. и дальше фантазия разработчика...
Идею понял кром справочников. Как можно использовать справочник, это что ли в списке указывать путь к DOS-приложению?
Elen (2006-06-23 16:39:00) [2]
> Если есть ориентироваочный код, не могли бы его показать.
Кода нет
> Никак не могу поймать дескриптор окна запускаемого DOS-приложения
Если известен заголовок окна или процесса, то его легко отловить скажем через EnumWindow, EnumProcess. Например вести справочник DOS программ и как только запустился процесс с именем указанным в справочнике делать то-то
Другой вариант : Юзер скорее всего будет по окну елозить мышкой когда оно открыто - Ставим глобальный хук на мышку и отлавливаем по получаемым в хуке координатам окно. и дальше фантазия разработчика... (Кода нет)
Василий (2006-06-23 15:26:00) [3]Elen © (23.06.06 07:47) [14]
Точно не знаю но кажется нет. Мой знакомый мучался примерно с такой же задачей скрытия кнопок и в конце концов сделал так (Мутно немного но работает...):
У консоли DOS как и у всякго окошка есть заголовок, где и находятся кнопки закрытия и свертывания. Высота у него где то 15 пикс. Суть в том, что как только мышка попадает в эту область ее курсор программно скрывается
А координаты определяются в своей ловушке в DLL
Если кто-то из Мастеров знает способ попроще, пусть не смеется над этим. :-)
Если можно чуточку подробнее. Если есть ориентироваочный код, не могли бы его показать.
Еще один момент. Никак не могу поймать дескриптор окна запускаемого DOS-приложения. Есть ли какая-нибудь процедура (так как через WinSight не могу отыскать окно приложения, а использовать FindWindow требуются значения "формы" приложения) котороя запустила бы приложение и тут же присвоела переменной ее дескриптор. Или может есть более верный способ найти дескриптор окна DOS-приложения.
Заранее благодарен.
Elen (2006-06-23 07:47:00) [4]
> А на счет управляющих кнопок окна (закрытие, свертывание.
> ..) их убрать можно или сделать неактивными.
Точно не знаю но кажется нет. Мой знакомый мучался примерно с такой же задачей скрытия кнопок и в конце концов сделал так (Мутно немного но работает...):
У консоли DOS как и у всякго окошка есть заголовок, где и находятся кнопки закрытия и свертывания. Высота у него где то 15 пикс. Суть в том, что как только мышка попадает в эту область ее курсор программно скрывается
А координаты определяются в своей ловушке в DLL
Если кто-то из Мастеров знает способ попроще, пусть не смеется над этим. :-)
Василий (2006-06-23 05:13:00) [5]>Elen © (22.06.06 15:44) [11]
>Кажется GetWindowPlacement и установить SetWindowPlacement.
Спасибо. Сегодня поэкспериментирую.
А на счет управляющих кнопок окна (закрытие, свертывание...) их убрать можно или сделать неактивными.
Игорь Шевченко (2006-06-22 16:46:00) [6]
> А вот если запустить NC, DOS Nav или на худой конец Turbo
> Pascal 7.0 у которых свои "окошки" в программе. Мне надо
> запустить именно такую программу.
Не получится.
Elen (2006-06-22 15:44:00) [7]
> Не подскажите какими функциями можно определить координаты окна
Кажется GetWindowPlacement и установить SetWindowPlacement.
Василий (2006-06-22 15:04:00) [8]>Elen © (22.06.06 07:44) [8]
>разве что ты не передвинеш программно окошко запускаемой проги в то >место куда нужно или поставь по другому задачу.
Не подскажите какими функциями можно определить координаты окна запускаемого приложения DOS и каким образом его на экране отобразить. И еще можно ли определенными функциями (если таковые есть) у запускаемого окна убрать (или сделать) неактивными кнопки управления окна, тогда действительно можно получить эффект открывания DOS-приложения в отдельном окне, как будто открыто на каком нибудь компоненте.
Заранее благодарен.
>vidiv © (22.06.06 08:43) [9]
>winoldap же заставлет взаимодействовать=)))
Немного не понял, а поподробнее можно ?
vidiv (2006-06-22 08:43:00) [9]
> Elen © (22.06.06 07:44) [8]
winoldap же заставлет взаимодействовать=)))
Elen (2006-06-22 07:44:00) [10]
> Василий
А вот если запустить NC, DOS Nav или на худой конец Turbo Pascal 7.0 у которых свои "окошки" в программе
DOS программы так с твоим приложением взаимодействовать не будут, разве что ты не передвинеш программно окошко запускаемой проги в то место куда нужно или поставь по другому задачу.
Василий (2006-06-22 06:12:00) [11]Здравствуйте.
Я исследовал код на работу.
Да он работает, но он годится для запуска приложений которые работают и выдают соответсвующие сообщения в ДОС (тот же scandisk).
А вот если запустить NC, DOS Nav или на худой конец Turbo Pascal 7.0 у которых свои "окошки" в программе. Мне надо запустить именно такую программу.
Zeqfreed (2006-06-18 09:56:00) [12]> [4] Василий (18.06.06 05:45)
http://delphi.about.com/cs/adptips2001/a/bltip0201_2.htm
http://www.elists.org/pipermail/delphi-talk/2000-January/002484.html
Вот что выдает гугл за первую минуту поиска.
Loginov Dmitry (2006-06-18 09:47:00) [13][3] не смотри, ибо это шутка...
Василий (2006-06-18 05:45:00) [14]Я начинающий и не все знаю.
Не дадите ссылку, где это более подробно расписано, а то я из этих ответов ничего не понял.
Понял где надо искать, а как сделать на практике...
Loginov Dmitry (2006-06-17 08:35:00) [15]Используй технологии, связанные с СОМ...
Василий (2006-06-17 07:07:00) [16]Прошу прощения, не нашел.
Ссылкой не поможите?
StriderMan (2006-06-15 08:48:00) [17]где-то тут была тема, как выводить консольное приложение в TMemo, поищите