views:

96

answers:

3

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.

+3  A: 

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

ho1
+1  A: 

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.

BlueRaja - Danny Pflughoeft
Are you sure that PC Anywhere transfers window and control properties? If so, do you have any links to documentation regarding its protocol? I would be very interested to read it! :)
Adam Paynter
+1  A: 

DirectShow Filters seems to be the most popular way to do this. See this answer http://stackoverflow.com/questions/810994/using-windows-media-encoder-to-record-screen/811047#811047. 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.

kervin