Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Borland C++ Builder/Turbo C++ Explorer > Запуск приложения в окне формы. |
Автор: sat_art 22.09.21, 13:41 |
Добрый день. Прошу помощи. Смысл в чем - пишу аналог Putty Connection Manager. Putty - это терминал для подключения по телнету и ssh. Putty Connection Manager - приложение которое запускает несколько экземпляров терминала Putty у себя в окне. Сам он не нравится по нескольким причинам. Вопрос в чем - как правильно запустить стороннее приложение, что бы оно отобразилось например в TTabSheet моей формы и убрать бордюр. Запускаю, устанавливаю парентом TTabSheet. Все хорошо - но, никак не получается убрать WS_BORDER и WS_CAPTION. Если делаю WS_POPUP - получается окно без бордюра, но проблема со скролом. Перепробовал кучу всего - понимаю, что что то делаю не так. Еще когда парентом делаю свой TTabSheet, окно нормально отображается в пределах TTabSheet, но когда оно активно, основная форма почему то неактивна становится. Чую тут где то собака порылась. Получается нормально отобразить, только если нажать в самом putty fullscreen. Тогда он разворачивается как надо. Вот как это выглядит в Putty Connection Manager pcm.png (, : 87) Вот что получается у меня. pcm1.png (, : 85) Может кто подскажет умную мысль. |
Автор: ЫукпШ 23.09.21, 21:36 |
Цитата sat_art @ Putty Connection Manager - приложение которое запускает несколько экземпляров терминала Putty у себя в окне. sat_art, а этот Мanager точно запускает именно putty ? --- Есть ещё такой вариант - используем не сам putty, а plink из putty-набора. Это клиент командной стороки. Plink можно запускать с перехватом ввода/вывода без показа консольного окна. И тогда рисуй что и как хочешь в своих окошках. Типовые (для тебя) операции с сервером можно будет вообще выполнять одним щелчком мыши, поскольку можно будет автоматизировать выдачу серии запросов (с контролем ответов). |
Автор: sat_art 24.09.21, 05:26 |
ЫукпШ точно PuTTY. Я думал над вариантом plink - но городить свое окно терминала с разбором входящих символов намного сложнее. Да - это уже и приложение немного другого уровня получается, которое наворачивай и наворачивай. Но так там и до организации ssh недалеко, и нафиг тогда вообще тот PuTTY. |
Автор: ЫукпШ 24.09.21, 14:01 |
Цитата sat_art @ Вопрос в чем - как правильно запустить стороннее приложение, что бы оно отобразилось например в TTabSheet моей формы и убрать бордюр. sat_art, можно посмотреть исходники Putty Connection Manager. Вот ещё ссылка 1, 2 - там по исходнику комментарий: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> ... // убрать рамку окна SetWindowLong(appHandle, GWL_STYLE, WS_VISIBLE); ... |
Автор: sat_art 24.09.21, 14:12 |
ЫукпШСпасибо. Исходников я не нашел. А по ссылке - все это давно перепробовал, все получается кроме убрать рамку. Уже смотрю в сторону CreatePseudoConsole. Добавлено После SetWindowLongPtr(hwnd, GWL_STYLE,WS_VISIBLE) GetWindowLongPtr(hwnd, GWL_STYLE) дает 0x10E40000 - WS_VISIBLE|WS_BORDER|WS_DLGFRAME|WS_VSCROLL|WS_SIZEBOX Если по одному пытаться выключить - не выключается WS_BORDER и WS_DLGFRAME. Добавлено Тонкая рамка вокруг окна пропадает. А вот заголовок окна нет. |
Автор: ЫукпШ 24.09.21, 22:02 |
Исходники Putty Connection Manager Это можно обнаружить отсюда ----- Вот, посмотри - у этого автора всё получилось: Попробуй не Tab - контрол, а просто "панель". Как на этой картинке. |
Автор: sat_art 25.09.21, 15:54 |
Пробовал даже просто в форму - нет. |
Автор: sat_art 25.09.21, 15:58 |
Вот получилось <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SetWindowPos(hwnd, HWND_TOP, 0, 0, Width, Height, SWP_FRAMECHANGED); SetWindowLongPtr(hwnd, GWL_STYLE,WS_VISIBLE|WS_MAXIMIZE|WS_VSCROLL); Вроде и до этого так же пробовал. Х.З. короче. Теперь у меня свой Putty Connection Manager - назовем его Putty Multiple Connection. ЫукпШ спасибо за помощь. |