I am trying to figure out what it would take to create software like MaxiVista or ScreenRecycler. I have good experience with Java and C++, but these two programs are just awesome and over my head. Basically, they take a window from one computer and transfer it to another.

Does anyone know how these are done?

  • How would I grab the window image data from the device? Do you overload the graphics drivers? Is there a way to capture a window directly?

  • How do I make the os think that there's another monitor?

  • Are there any caveats to image compression/transfer?

I'm most familiar with OS X and Windows (I am sure the process is different on each), but help on either or would be amazing.

Edited 3 Years Ago by JaceLightning

I think it works like this.

They software is in fact a virtual desktop multi screen application
http://en.wikipedia.org/wiki/Virtual_desktop#Windows
combined with a screen sharing application
http://en.wikipedia.org/wiki/Desktop_sharing

The server side of the application captures the non-primary virtual desktops and sends a network stream to the clients, which are of course the other computers to which the desktop "extends" it self.

So in my opinion there is no "magic" graphics driver of any kind.

Hope this helps.

Thanks for your reply. I vaguely know how to sync data between machines, have no idea how one would create a virtual desktop. Do you know of any tutorials or resources that would help?

Those two are open source projects which might help you getting started :
http://virtuawin.sourceforge.net/

http://virt-dimension.sourceforge.net/

as for screen sharing you could try :

http://obsproject.com/index
and of course :
http://www.videolan.org/vlc/

I have no previous experience personally but i am sure that you will get some help from those guys

For what it's worth both parts of a project like this are quite large, so doing it all by yourself might be a challenging task.
But that's why open source software is great!

Edited 3 Years Ago by ktsangop

This article has been dead for over six months. Start a new discussion instead.