[Lazarus] Embed other application window with qt5
Luca Olivetti
luca at wetron.es
Tue Jun 9 09:08:43 CEST 2020
El 7/6/20 a les 11:51, Luca Olivetti via lazarus ha escrit:
> Hello,
>
> I'd like to embed another application window[*] in my application.
> I found this code
>
> https://stackoverflow.com/questions/7611103/embedding-window-into-another-process#7612436
>
>
> and it works. Since my application should run under windows that should
> be enough, but I prefer to do my testing under Linux, so I'd like a
> solution for the qt5 widgetset.
>
> I tried this code
>
> procedure TForm1.Button1Click(Sender: TObject);
> var kk:QWindowH;
> cc: QWidgetH;
> begin
> kk:=QWindow_fromWinID(StrToInt64(Edit1.text));
> QWindow_setFlags(kk,QtFramelessWindowHint);
> cc:=QWidget_createWindowContainer(kk);
> QWidget_setParent(cc,TQtWidget(Self.Handle).Widget);
> end;
I also tried
QWidget.setParent(cc, TQTMainWindow(handle).GetContainerWidget)
and
QWidget.setParent(cc, TQTMainWindow(handle).Widget)
as well as TQTWidget(panel1.handle).widget
but nothing works (the other application disappears but it doesn't show
on my form/panel)
>
> and, while the other application window disappears, I don't see it in my
> form (it's still running though).
>
> I tried to find some clues in the mplayer control but it doesn't work
> with qt (I tried to adapt it with no success), besides it just instructs
> mplayer to embed itself in a control.
>
>
> [*] actually I need to embed a browser, but none of the alternatives in
> https://wiki.freepascal.org/Webbrowser work:
>
> - turbopower is too limited
> - I didn't try qtWebkit but it seems qt only
I tried, qt4 only, so no qt5
> - geckoport has been discontinued
> - fpCEF3 is old and couldn't make it work[**]
> - CEF4Delphi is windows only at the moment
>
> but playing with userChrome.css I could embed firefox as an external
> application.
it's tough (firefox is special since firefox.exe isn't directly the
owner of its window but it spawns other instances that in turn show the
window and it always shows the window borders, no matter what api you
try to avoid that) but I managed to do it under windows.
Bye
--
Luca Olivetti
Wetron Automation Technology http://www.wetron.es/
Tel. +34 93 5883004 (Ext.3010) Fax +34 93 5883007
More information about the lazarus
mailing list