Windows Desktop Sharing API Basics
Microsoft Terminal Services provides a public "Windows Desktop Sharing API" based on RDP to enable customers to write custom collaboration solutions in Windows Vista. These API's are available on all the SKU's starting with Windows Vista Home Basics. You can write a customized collaboration application that can do either or all kinds of sharing including desktop, application and region. Useful MSDN documentation of these API's is available at:
Windows desktop sharing is a multi-party screen sharing technology in Windows Vista, wherein a local desktop can be transmitted over an RDP connection without creating an additional session.
Microsoft Collaboration Solutions:
"Windows Meeting Space" and "Remote Assistance" in Windows Vista are based on these public API's -
API support versus perceived limitations in Windows Meeting Space:
Frequently Asked Questions:
Have you look at the SmartSizing API. Link to the API - http://msdn.microsoft.com/en-us/library/aa373358(VS.85).aspx. It is part of IRDPSRAPIViewer interface,
I'm working on a custom remote access application for Windows XP Embedded. Any plans to support Windows Desktop Sharing API on XPe? If not, can you recommend another solution?
Same question here: I need to support anything from Windows XP SP2 and up. If RTC is gimped on Vista, and the Vista APIs are not available on XP SP2, then how can I cross-communicate?
I could use RealVNC, or Citrix, or something like that, but it seems Microsoft has enough technologies floating around that this ought to be possible without resorting to that...
Are Desktop Sharing working on Windows 7?
Many people have asked: Yes, remote desktop sharing works on Win7. I have a 64-bit desktop and a 32-bit netbook, both running 7, and using the ActiveX controls for hosting and viewing.
However, when I click the "control desktop" button in the sample application, and then click in the viewing control, it just beeps at me; it doesn't actually let me share control. The hosting application does receive the request, and does assign "Control" level access in the event handler.
Why does this not work as advertised?
Also, why can't I get access to the RDP stream at a lower level? I'd really like to be able to get the bitmap data directly (because I'm rendering to something that's not the screen), and I'd really like to be able to inject mouse and keyboard events directly (because I'm using input devices that are not the physical devices).
As it is, I'm trying to host the ActiveX control and use IViewObject to Draw() into an offscreen bitmap, and it's not working out very well so far...
I have the same problem as Jon has:
I'm unable to draw the contents of the RDP ActiveX control using IViewObject.
Is it possible at all to somehow render the contents of the RDP session managed by RDP ActiveX into the virtual device context (straight into memory)?
If it is not, it there any workarounds?
I believe Microsoft has not implemented IViewObject for RDP Active X because they did not want people to write RDP plugins for FireFox. God damn Microsoft!
I am trying to use this API in an MDI application. Whenever I create the child form I get a "Attempted to read or write protected memory. This is often an indication that other memory is corrupt." error.
Does anyone know why?
Are there any samples available for creating a screen sharing application using this API?
How can i access
Property for RDPViewer object?
Can we set the 'local' port to use for RDPViewer?
While the desktop sharing session is running, if the local user locks the screen, the remote user unable to unlock it. Is it a limitation of this control?
more ever, If there is no user logged in, and desktop sharing server is running as a service, then will it be possible for remote user to unlock the desktop and log in?
I mean, can this control also be used for un-attendant remote desktop control, just like Windows remote desktop?
Secondly, I am not able to send Alt+Ctrl+Del (or Alt+Ctrl+END) keys from remote session. I want to see CPU usage etc, while sharing the remote desktop.
Can anyone please guide me to find out how to achive this?
Thanks in advance.
I am trying to enhance this Desktop Sharing application available at the link below, and facing a problem:
(I think) The Limitation of this control is:
Consider two types of users: Physical user who actually sits in front of the machine and uses its actual keyboard, mouse and monitor. And Remote User: Who remotely shares the desktop.
While the desktop is being shared, if physical user press Ctrl+Alt+Del to open the Windows Security Dialog, then the sharer stop sharing the desktop until the user is back to normal screen by choosing any of the option like task manager, or by pressing 'Esc key'.
This is because the sharer is running in user context.
But when I tried to run the sharer application as a system process or as a service, then the sharer does not share the session (session-0) at all.
My Aim: You probably have guessed it by now…
Yes. I want the sharer to share the desktop, no matter whether the use has locked the desktop, or even if there is no user logged in.
NOTE: To make it simple, I am trying this only on client OS - Windows 7. So no question of multiple sessions as in Windows 2008. in that case, I would like to share Session 0 always.
I tried to look more into it, but couldn't find anything other than working of Terminal Services on Server OS:
Can you please guide me on how and where to start with, or where I can find more details about working of rdpencom.dll?
Any kind of help, suggestions are really apreaciated.
How many viewers can simultaneously connect to a sharer?
In my test, I can only have 3 viewer to connect to a sharer simultaneously.
Is this correct? or
Is there any way to allow more viewers?
Thanks in advance.
Hi, is there any way to connect pc/machine remotly using above API with Static IP Address via internet?
Please let me know if you have any solutions.