The famous rdesktop  running natively on windows ce and windows mobile
Intro and Background
Some times ago I found that message of Jay Sorg  and retrieved a copy of his code for a native rdesktop  win32 version. I played a little and got the code compile with Visual Studio 2005 with the Windows Mobile SDK.
I tried to implement windows clipboard support to enhance the transfer of texts between the client and server, but unfortunately I was not successful yet. Hopefully someone jumps in and helps enhancing the code and adds some features.
Rdesktop is open source and you can go with the wince implementation here, but if it does not work for you, you have either change the code yourself (and publish it) or find someone that is able to do for you.
There is a template uiports/xxxwin.c in the actual rdesktop source you can use as a starter to compile the actual rdesktop version for windows mobile if you manage to get all the dependencies to work. If you success, forget this post and go with this version (maybe you leave me a note?).
Why another Remote Desktop/Terminal Server Client?
The Windows Mobile Remote Desktop Client (or Remote Desktop Mobile, RDM) lacks some useful features available in the Windows CE version or the Desktop Windows version:
- No automated login
- No kiosk mode
- Function keys are not sent to server
The first item is essential if you like to start a Terminal Server session without user intervention.
The second item is important for using RDM in a production environment.
The third item is useful to run applications on the Terminal Server (TS) that use Function keys.
There are some commercial remote desktop clients available for windows mobile:
- Mochasoft RDP client 
“Windows 200x servers and terminal servers are not supported, as to a Microsoft patent license.”
- zaDesktop 
This is currently in an early state.
- RDP Finster 
Not really clear where this comes from.
I assume some of the commercials are either using mstscax or rdesktop code. Some time ago MS published the RDP documentation . Maybe the commercial apps did start from there. Going with the TSC COM library mststcax would be great, but who has the doc for this? For desktop PCs it is documented but not for windows mobile. If someone has a doc to this leave me a note. Then we can start to write a TSC around this library.
There are also some rewritten TSC for the desktop not using mstscax. One is called ProperJavaRDP and maybe a good starting point to rewrite a dotnet based native TSC for windows mobile.
Usage of the free opensource rdesktop-ce
You can start winrdesktop on windows mobile either with an ini file or with command line arguments:
(place either in program dir or in root)
[main] server=192.168.128.5 port=3389 username=YourUserName password=YourPassword bpp=16 geometry=1024x768 #fullscreen
server : provide the server IP or DNS host name
port : provide the port to use for RDP, usually 3389
username : provide the login user name for the terminal client session
password : provide the password of the user
bpp : define the bits per pixel to be used (number of colors per pixel)
geometry : define the size of the remote desktop window width x height An application to be used on windows mobile devices should match the screen size of the device. For example 240×320 (QVGA). Otherwise the user has to scroll the window to get access to all of the remote screen.
fullscreen : currently not supported
UPDATE 23. nov 2010:
fullscreen now supported. Fullscreen will switch rdesktop to not show a caption and no menu bar. If geometry matches the device’s screen size, there will also be no scrollbars.
This screenshot was taken of an app I wrote running on a Windows 2003 server of a QVGA device with following winrdesktop.ini:
[main] server=192.168.128.5 port=3389 username=rdesktop password=rdesktop bpp=16 geometry=240x320 fullscreen
WinRDesktop [-g widthxheight] [-t port] [-a bpp] [-f] [-u username] [-p password] [-d domain] [-s shell] [-c working directory] [-n host name] server-name-or-ip
options are the same as in winrdesktop.ini plus:
-d domain : specify the domain of the user login -s shell : define a shell to use on TSC -c working directory : define a working directory for the session -n host name : specify the host name to use for the client (visible on TSC)
OUTDATED: DO NOT USE, look for latest at github!
Restrictions of current code See googlecode issues  for a list of known restrictions.
Downloads Windows Mobile Executable and INI sample file at googlecode 
Source code: see googlecode