[Lazarus] Remote application
mschnell at lumino.de
Wed Oct 31 10:13:43 CET 2012
I understand that there are (at least) two ways to do the remote display.
A) Read the pixels from the graphics driver. This is what VNC does. The
problem here is, that you don't know when an update is necessary (and
thus you need to do polling) and that reading the pixels needs a lot of
performances (get a GDI-handle, read the complete screen memory via the
bus and then transfer only the pixels that have changed). (In fact some
time ago I stole this code from VNC, translated it from C to Pascal and
did a thingy that could transfer a rectangle of the screen via TCP to
B) Hook into the interface between the application and the Windows
manager. This is what Linux "Remote X" and Windows "Remote Desktop" do.
VirtualBox (and supposedly VMWare) seems to be able to do do this, too,
and here I did already see that it is possible to virtualize a single
program rather than a complete Desktop.
Seemingly NX can do both, depending on the situation.
It's understandable that doing (B) is at least "difficult", when you
want to attach to a running program, as supposedly a program transfers
some information when starting and the Window manager needs to know same
even when it requests a full repaint. But obviously Windows "Remote
Desktop" can handle this problem decently.
So attaching to an already running program (not the Desktop it runs on)
using (B) is not that easy :-( . Maybe it's possible to something like
starting another instance of the program with NX in the way you
originally described and do some magic within the program itself to meld
the running instance into the newly started one. (Just raving...)
More information about the Lazarus