views:

189

answers:

2

Hello,

I am a seasoned Delphi developer and would like to create something like seamless terminal services where an application is executed on a server but appears on the the desktop of the client.

To someone working on the server i don't want them to see the remote application running (except if they looked in at the list of running processes).

Im lost as to how to go about this, where to start, how to get an application to render to a surface other than the servers desktop.

Any suggestions would be most appreciated.

+3  A: 

Starting from 2008 Terminal Services (which has been rebranded to Remote Desktop Services) offers RemoteApps which do exactly what you describe. Citrix (XenApp) can do this on all windows (server) versions. So you might want to look at those products before deciding to recreate them yourself.

If you do decide to go on, this link might be interesting, it's a sample project called "Extending Microsoft's Terminal Services Client To Provide Seamless Windows"

Remko
Thanks for the link, I would like to create my own application simply because of the cost of purchasing an existing ones that do this and I only need very basic functionality. The link you provided is exactly what I hope to achieve but it depends on using Microsoft’s RDP protocol. I would like to avoid licensing issues and a need for the end users to install Terminal Services before they can use my application. But this does give me a starting point.
cloudstrif3
+1  A: 

From what you are describing, I'd say you should be looking at writing a windows service (not terminal services) and using a inter-process-communications (IPC) system to get status information to a "client" application that can be run by the appropriate user, either on the same machine or another over the network.

Myself, I do exactly this using the RemObjects SDK which makes my client application look like it is just making function calls, but actually they go to the server which implements them. The server can then get on with its job in one (or more) thread, and all the user interface is done in the client which finds out what to display using the IPC channel.

mj2008