На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Запуск приложения в окне формы.
    Добрый день.
    Прошу помощи.
    Смысл в чем - пишу аналог Putty Connection Manager.

    Putty - это терминал для подключения по телнету и ssh.

    Putty Connection Manager - приложение которое запускает несколько экземпляров терминала Putty у себя в окне. Сам он не нравится по нескольким причинам.

    Вопрос в чем - как правильно запустить стороннее приложение, что бы оно отобразилось например в TTabSheet моей формы и убрать бордюр.
    Запускаю, устанавливаю парентом TTabSheet. Все хорошо - но, никак не получается убрать WS_BORDER и WS_CAPTION. Если делаю WS_POPUP - получается окно без бордюра, но проблема со скролом.
    Перепробовал кучу всего - понимаю, что что то делаю не так.

    Еще когда парентом делаю свой TTabSheet, окно нормально отображается в пределах TTabSheet, но когда оно активно, основная форма почему то неактивна становится. Чую тут где то собака порылась.
    Получается нормально отобразить, только если нажать в самом putty fullscreen. Тогда он разворачивается как надо.

    Вот как это выглядит в Putty Connection Manager
    Прикреплённая картинка
    Прикреплённая картинка

    Вот что получается у меня.
    Прикреплённая картинка
    Прикреплённая картинка


    Может кто подскажет умную мысль.
      Цитата sat_art @
      Putty Connection Manager - приложение которое запускает несколько экземпляров терминала Putty у себя в окне.

      sat_art, а этот Мanager точно запускает именно putty ?
      ---
      Есть ещё такой вариант - используем не сам putty, а plink из putty-набора.
      Это клиент командной стороки.
      Plink можно запускать с перехватом ввода/вывода без показа
      консольного окна.
      И тогда рисуй что и как хочешь в своих окошках.
      Типовые (для тебя) операции с сервером можно будет вообще выполнять
      одним щелчком мыши, поскольку можно будет автоматизировать
      выдачу серии запросов (с контролем ответов).
      Сообщение отредактировано: ЫукпШ -
        ЫукпШ точно PuTTY.
        Я думал над вариантом plink - но городить свое окно терминала с разбором входящих символов намного сложнее. Да - это уже и приложение немного другого уровня получается, которое наворачивай и наворачивай. Но так там и до организации ssh недалеко, и нафиг тогда вообще тот PuTTY.
          Цитата sat_art @
          Вопрос в чем - как правильно запустить стороннее приложение, что бы оно отобразилось например в TTabSheet моей формы и убрать бордюр.

          sat_art, можно посмотреть исходники Putty Connection Manager.
          Вот ещё ссылка 1, 2 -
          там по исходнику комментарий:
          ExpandedWrap disabled
            ...
            // убрать рамку окна
             SetWindowLong(appHandle, GWL_STYLE, WS_VISIBLE);
            ...
          Сообщение отредактировано: ЫукпШ -
            ЫукпШСпасибо.
            Исходников я не нашел.
            А по ссылке - все это давно перепробовал, все получается кроме убрать рамку.
            Уже смотрю в сторону CreatePseudoConsole. :D

            Добавлено
            После 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.

            Добавлено
            Тонкая рамка вокруг окна пропадает. А вот заголовок окна нет.
              Исходники Putty Connection Manager
              Это можно обнаружить отсюда
              -----
              Вот, посмотри - у этого автора всё получилось:
              user posted image

              Попробуй не Tab - контрол, а просто "панель". Как на этой картинке.
              Сообщение отредактировано: ЫукпШ -
                Цитата ЫукпШ @
                Попробуй не Tab - контрол, а просто "панель". Как на этой картинке

                Пробовал даже просто в форму - нет.
                  Вот получилось
                  ExpandedWrap disabled
                            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.

                  ЫукпШ спасибо за помощь.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0344 ]   [ 18 queries used ]   [ Generated: 28.03.24, 15:37 GMT ]