Интересен механизм интеграции чужого приложения в свое.
Примеры:
1. PuTTY Connection Manager содержит в себе PuTTY
2. mRemote содержит в себе PuTTY
Как подобное делается?
интеграция чужого приложения
Модератор: Модераторы
Если имеется в виду встраивание "консольных" приложений, то вот это может помочь:
http://wiki.lazarus.freepascal.org/Exec ... rograms/ru
http://wiki.lazarus.freepascal.org/Exec ... rograms/ru
под виндами делается просто
1. любым методом (например TProcess) запускаешь нужное приложение и устанавливаешь нужные параметры (не показывать заголовок, скрыть окно и т.п.)
2. получаешь хэндл нужного окна (hWnd)
3. перекидываешь окно к себе в нужный контрол (form.Panel)
п. 1 и 2 вроде совсем простые и вопросов быть не должно
п.3 решается тоже просто
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);
У TProcess нет списка хэндлов окон? Получается, что надо по ProcessID Узнать хэндл окна? Как это лучше сделать (не хочется делать перебор всех окон в системе)?
Как такое делать под другими ОС?
Как такое делать под другими ОС?
