Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Вниз

Запуск внешнего приложения внутри формы.   Найти похожие ветки 

 
Василий   (2006-06-15 06:39) [0]

Здравствуйте, мастера.

Вот такой вопрос возник.
Есть программа, работающая под DOS и мне необходимо ее запустить из моего приложения. Фунции ShellExecute, Winexec запускают его во внешнем окне. А мне бы хотелось чтобы запускалась на главной моей форме (скажем на форму кидаю panel1 со своими размерами, а программа "запускается" в области данной панели.

Не подскажите как это сделать.


 
StriderMan ©   (2006-06-15 08:48) [1]

где-то тут была тема, как выводить консольное приложение в TMemo, поищите


 
Василий   (2006-06-17 07:07) [2]

Прошу прощения, не нашел.

Ссылкой не поможите?


 
Loginov Dmitry ©   (2006-06-17 08:35) [3]

Используй технологии, связанные с СОМ...


 
Василий   (2006-06-18 05:45) [4]

Я начинающий и не все знаю.
Не дадите ссылку, где это более подробно расписано, а то я из этих ответов ничего не понял.
Понял где надо искать, а как сделать на практике...


 
Loginov Dmitry ©   (2006-06-18 09:47) [5]

[3] не смотри, ибо это шутка...


 
Zeqfreed ©   (2006-06-18 09:56) [6]

> [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

Вот что выдает гугл за первую минуту поиска.


 
Василий   (2006-06-22 06:12) [7]

Здравствуйте.
Я исследовал код на работу.
Да он работает, но он годится для запуска приложений которые работают и выдают соответсвующие сообщения в ДОС (тот же scandisk).
А вот если запустить NC, DOS Nav или на худой конец Turbo Pascal 7.0 у которых свои "окошки" в программе. Мне надо запустить именно такую программу.


 
Elen ©   (2006-06-22 07:44) [8]


> Василий
А вот если запустить NC, DOS Nav или на худой конец Turbo Pascal 7.0 у которых свои "окошки" в программе

DOS программы так с твоим приложением взаимодействовать не будут, разве что ты не передвинеш программно окошко запускаемой проги в то место куда нужно или поставь по другому задачу.


 
vidiv ©   (2006-06-22 08:43) [9]


> Elen ©   (22.06.06 07:44) [8]

winoldap же заставлет взаимодействовать=)))


 
Василий   (2006-06-22 15:04) [10]

>Elen ©   (22.06.06 07:44) [8]
>разве что ты не передвинеш программно окошко запускаемой проги в то >место куда нужно или поставь по другому задачу.


Не подскажите какими функциями можно определить координаты окна запускаемого приложения DOS и каким образом его на экране отобразить. И еще можно ли определенными функциями (если таковые есть) у запускаемого окна убрать (или сделать) неактивными кнопки управления окна, тогда действительно можно получить эффект открывания DOS-приложения в отдельном окне, как будто открыто на каком нибудь компоненте.
Заранее благодарен.

>vidiv ©   (22.06.06 08:43) [9]
>winoldap же заставлет взаимодействовать=)))


Немного не понял, а поподробнее можно ?


 
Elen ©   (2006-06-22 15:44) [11]


> Не подскажите какими функциями можно определить координаты окна

Кажется GetWindowPlacement и установить SetWindowPlacement.


 
Игорь Шевченко ©   (2006-06-22 16:46) [12]


> А вот если запустить NC, DOS Nav или на худой конец Turbo
> Pascal 7.0 у которых свои "окошки" в программе. Мне надо
> запустить именно такую программу.


Не получится.


 
Василий   (2006-06-23 05:13) [13]

>Elen ©   (22.06.06 15:44) [11]
>Кажется GetWindowPlacement и установить SetWindowPlacement.

Спасибо. Сегодня поэкспериментирую.

А на счет управляющих кнопок окна (закрытие, свертывание...) их убрать можно или сделать неактивными.


 
Elen ©   (2006-06-23 07:47) [14]


> А на счет управляющих кнопок окна (закрытие, свертывание.
> ..) их убрать можно или сделать неактивными.

Точно не знаю но кажется нет. Мой знакомый мучался примерно с такой же задачей скрытия кнопок и в конце концов сделал так (Мутно немного но работает...):
У консоли DOS как и у всякго окошка есть заголовок, где и находятся кнопки закрытия и свертывания. Высота у него где то 15 пикс. Суть в том, что как только мышка попадает в эту область ее курсор программно скрывается
А координаты определяются в своей ловушке в DLL

Если кто-то из Мастеров знает способ попроще, пусть не смеется над этим. :-)


 
Василий   (2006-06-23 15:26) [15]

Elen ©   (23.06.06 07:47) [14]
Точно не знаю но кажется нет. Мой знакомый мучался примерно с такой же задачей скрытия кнопок и в конце концов сделал так (Мутно немного но работает...):
У консоли DOS как и у всякго окошка есть заголовок, где и находятся кнопки закрытия и свертывания. Высота у него где то 15 пикс. Суть в том, что как только мышка попадает в эту область ее курсор программно скрывается
А координаты определяются в своей ловушке в DLL

Если кто-то из Мастеров знает способ попроще, пусть не смеется над этим. :-)


Если можно чуточку подробнее. Если есть ориентироваочный код, не могли бы его показать.

Еще один момент. Никак не могу поймать дескриптор окна запускаемого DOS-приложения. Есть ли какая-нибудь процедура (так как через WinSight не могу отыскать окно приложения, а использовать FindWindow требуются значения "формы" приложения) котороя запустила бы приложение и тут же присвоела переменной ее дескриптор. Или может есть более верный способ найти дескриптор окна DOS-приложения.

Заранее благодарен.


 
Elen ©   (2006-06-23 16:39) [16]


> Если есть ориентироваочный код, не могли бы его показать.

Кода нет

> Никак не могу поймать дескриптор окна запускаемого DOS-приложения

Если известен заголовок окна или процесса, то его легко отловить скажем через EnumWindow, EnumProcess. Например вести справочник DOS программ и как только запустился процесс с именем указанным в справочнике делать то-то
Другой вариант : Юзер скорее всего будет по окну елозить мышкой когда оно открыто - Ставим глобальный хук на мышку и отлавливаем по получаемым в хуке координатам окно. и дальше фантазия разработчика... (Кода нет)


 
Василий   (2006-06-24 07:58) [17]

>Elen ©   (23.06.06 16:39) [16]
>Если известен заголовок окна или процесса, то его легко отловить скажем >через EnumWindow, EnumProcess.
Заголовок окна, это то что на написано на "составной части формы", типа "c:\mustang\winstart.bat  cmd.exe" иди что-то другое.
Спасибо. Прочитаю про эти функции.

> Например вести справочник DOS программ и как только запустился >процесс с именем указанным в справочнике делать то-то
>Другой вариант : Юзер скорее всего будет по окну елозить мышкой когда >оно открыто - Ставим глобальный хук на мышку и отлавливаем по >получаемым в хуке координатам окно. и дальше фантазия разработчика...

Идею понял кром справочников. Как можно использовать справочник, это что ли в списке указывать путь к DOS-приложению?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.009 c
15-1149924584
QuickFinder
2006-06-10 11:29
2006.07.09
Настройка .procmailrc


8-1136279120
Vitaliy
2006-01-03 12:05
2006.07.09
LCD дисплей


2-1150964585
D@Nger
2006-06-22 12:23
2006.07.09
Не получается установить RxLib


2-1150449361
salexn
2006-06-16 13:16
2006.07.09
В чем причина ошибки


15-1150036334
TUser
2006-06-11 18:32
2006.07.09
Perl, Apach, ect





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский