VitoPlantamura.com logo - Click here to go to the site home page... Click here to go to the site home page... Click here to go to the Blog page... Click here to go to the archives page... Click here to go to the about page...
"extremely impressive work"
- Mark Russinovich, www.sysinternals.com
(referring to my BugChecker)
my face...
Homepage of Vito Plantamura (@, LinkedIn), Windows Researcher and Developer. [user=Guest] - updated: August 08, 2007
 Ultr@VNC Viewer 1.1.0.2 ActiveX Control
ULTR@VNC VIEWER ACTIVEX CONTROL

For my product GoToTerminal, I needed a VNC Client (in the form of an ActiveX control) in order to add VNC support to GoToTerminal.

INTRODUCTION

After a quick search in Google, I discovered that there is any free VNC ActiveX Client, so I decided to take the standard Windows Ultr@VNC client and convert it to an ActiveX Control. The very good quality of the implementation (from an object oriented point of view) dramatically simplified my job. The entire conversion took 3 days. This is a screenshot of the GoToTerminal Control Panel, using my VNC ActiveX Client:

A VNC Server connection in GoToTerminal.

OBJECT MODEL

These are the properties and methods exposed by the control:

[id(1)] HRESULT Connect();
[id(2)] HRESULT Disconnect();
[propget, id(3)] HRESULT Connected([out, retval] BOOL *pVal);
[propget, id(4)] HRESULT Server([out, retval] BSTR *pVal);
[propput, id(4)] HRESULT Server([in] BSTR newVal);
[id(5)] HRESULT ExecuteCommand( [in] BSTR cmdText, [out,retval] BSTR *pRetVal );
[propget, id(6)] HRESULT IsInitialized([out, retval] BOOL *pVal);

There are 2 events supported by the ActiveX control:

[id(1)] HRESULT OnConnected();
[id(2)] HRESULT OnDisconnected(BSTR reason);

CONVERSION DETAILS

As I said above, the conversion itself was so easy that I was able to clearly isolate all my changes to the code, in a way that preserves the dual compilation of both my ActiveX ATL project and of the original Win32 client. All the changes and additions to the original code are controlled by a preprocessor symbol (_ULTRAVNCAX_), that was also a good way I used to mark all the points in the code where actually I made changes, thus simplifying the conversion of future versions of the VNC client to this ActiveX form.

In the “UltraVncAx” folder you can find the ATL code specific to the ActiveX version of the client. Most noticeably, you can find here the code that relays some relevant Windows messages from the ActiveX control to the VNC client child window and the code that hooks the keyboard (through SetWindowsHookEx/WH_KEYBOARD) in order to correctly dispatch the user input messages to the VNC client (when the ActiveX is focused), in the case when the client is hosted in a complex ActiveX Control Container, such as Internet Explorer.

LICENSE

My ActiveX VNC client, as well as the original Win32 VNC viewer, is licensed under the terms of the GNU General Public License (GPL).

DOWNLOAD

You can download the source code of the Ultr@VNC ActiveX Client from here.
You can download the binary version of the Ultr@VNC ActiveX Client from here.

Also take a look at my Telnet Client ActiveX Control, derived from the excellent PuTTY client.

 Quotes
"Among the Windows experts I know personally, no one can beat Vito Plantamura."
- Francesco Balena, Code Architects SRL

"Your NDIS Monitor application, is amongst the most impressive networking code I have seen on the .Net framework."
- Ben Hakim.
 Photos
Various images from italian conferences and events (keep the mouse on a thumbnail for a short description):
Me at the Microsoft/HP/Intel organized Route64 event in Milan in May 2005, explaining how COM+ behaves on 64-bit Microsoft operating systems. I was there with the friends of Code Architects.
Me at the Microsoft Security Roadshow event in Bari in April 2006, explaining how the logon process works in Windows NT. There were 250 attendees.
Microsoft Security Roadshow 2006 in Treviso. This is an image of the huge 700-seats conference room.
Me at the Microsoft Security Roadshow 2006 in Treviso. This is a moment of the 3-hours session.
 Site login
NOTE: Actually the login feature is used only for administrative and content management purposes.
Username

Password

Everything here (code, binaries, text, graphics, design, html) is © 2010 Vito Plantamura and VPC Technologies SRL (VATID: IT06203700965).
If you download something (compilable or not) from the site, you should read the license policy file.
If you want to contact me via email, write at this address.