Question

I want to know what kind of technologies are used nowadays as underlying screen capture engine for remote administration software like

  • VNC
  • pcAnywhere
  • TeamViewer
  • RAC Remote
  • Administrator
  • etc..

The programming language is not so important as just to know whether a driver needs to be developed which is polling video memory 30 times per second or there are any com objects built in the Windows kernel to help doing this? I'm not interested in 3rd party components for doing this. Do I have to use DirectX facilities? Just want some start point to develop my own screen stream capture engine, which will be less CPU hog.

Was it helpful?

Solution

When it comes to VNC, there are a few open source tools that are compatible with VNC, for example TightVNC and I think UltraVNC, so you could just download the code and take a look.

Here's the link to download TightVNC source:
http://www.tightvnc.com/download/1.3.10/tightvnc-1.3.10_winsrc.tar.bz2

OTHER TIPS

PcAnywhere and RDP use custom protocols which try to transfer as little data as possible - transferring, for example, window and control properties (rather than an image of the window) and let the client render the window. Because of this, very much geared towards Windows (and don't always display exactly what's on the screen). They also offer more security.

VNC, on the other hand, being much more general, simply transfers bitmaps (or png, jpeg, or some other encoding) of the screen. To prevent having to transfer a picture of the entire screen 30 times a second, it only sends the areas which have changed since the last update.

DirectShow Filters seems to be the most popular way to do this. See this answer using Windows Media Encoder to record screen. A few good links in there.

Windows Media Encoder SDK is also an option, but requires the user have it installed and configured correctly. Search Bing or Google for "Windows Media Encoder SDK" and "Screen Capture", you should see quite a few forum posts.

For the taking lots of screenshots method, an article on doing this, including various methods and source can be found at http://gpalem.web.officelive.com/screencap.html.

UltraVNC's help talks a little about their Mirror Video Driver at http://www.uvnc.com/onlinehelp/8.html. It's light on details but gives a hint as to how they do it.

I believe how you capture will be heavily influence by your protocol. Do you need the entire screen? Deltas? etc. A list of the main protocols of commerical and opensource programs can be found at.... http://en.wikipedia.org/wiki/Remote_desktop_software

And an exhaustive list of programs, including their protocols and features can be found at... http://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software

As ho said, you can check out how other have done it. Depending on the license of the application of course. The second Wikipedia link has over 15 open source programs using various screen capture / transfer techniques and protocols.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top