Функция Fmx::Platform::Win::FindWindow()
принимает Win32 HWND
в качестве входных данных и возвращает объект FMX Form, которому принадлежит HWND
. Хотя HWND
является глобальным ресурсом и может быть доступен через границы процесса, каждый процесс имеет собственное адресное пространство памяти, и к объектам в каждом процессе нельзя напрямую получить доступ через границы процессов. Это означает, что HWND
, который вы передаете в FindWindow()
, должен принадлежать форме, которая существует в том же процессе, который вызывает FindWindow()
, что не так в вашей ситуации, поэтому FindWindow()
возвращает nullptr
.
Таким образом, вы не сможете объединить свои пользовательские интерфейсы вместе на уровне FMX, вы сможете сделать это только на уровне Win32 API, используя функцию Win32 SetParent()
. Чего вам вообще не следует делать за границами процессов , поскольку FMX не предназначен для совместного использования его windows между процессами.
Фактически, это даже невозможно, потому что Панель FMX не имеет собственного HWND
, в отличие от панели VCL. Все дочерние элементы управления в FMX не имеют окон! Только формы имеют HWND
s, поскольку они являются единственным элементом пользовательского интерфейса, который напрямую взаимодействует с ОС. Все дочерние элементы управления в FMX настраиваются FMX. Отношениями родитель / потомок управляет только FMX, а не ОС.