интеграция чужого приложения

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
mirk
постоялец
Сообщения: 319
Зарегистрирован: 24.09.2007 10:03:39

интеграция чужого приложения

Сообщение mirk »

Интересен механизм интеграции чужого приложения в свое.
Примеры:
1. PuTTY Connection Manager содержит в себе PuTTY
2. mRemote содержит в себе PuTTY
Как подобное делается?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Если имеется в виду встраивание "консольных" приложений, то вот это может помочь:
http://wiki.lazarus.freepascal.org/Exec ... rograms/ru
ev
долгожитель
Сообщения: 1793
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение ev »

под виндами делается просто
1. любым методом (например TProcess) запускаешь нужное приложение и устанавливаешь нужные параметры (не показывать заголовок, скрыть окно и т.п.)
2. получаешь хэндл нужного окна (hWnd)
3. перекидываешь окно к себе в нужный контрол (form.Panel)

п. 1 и 2 вроде совсем простые и вопросов быть не должно
п.3 решается тоже просто

Код: Выделить всё

  windows.SetParent(hWnd, form.Panel.Handle);
  windows.SetWindowLong(hWnd, 0, WS_VISIBLE);
  windows.ShowWindow(hWnd, SW_SHOWMAXIMIZED);
mirk
постоялец
Сообщения: 319
Зарегистрирован: 24.09.2007 10:03:39

Сообщение mirk »

У TProcess нет списка хэндлов окон? Получается, что надо по ProcessID Узнать хэндл окна? Как это лучше сделать (не хочется делать перебор всех окон в системе)?
Как такое делать под другими ОС?
Ответить