SkillAgentSearch skills...

MultiRDPClient.NET

A multi RDP client made with Windows Forms and an ActiveX RDP client.

Install / Use

/learn @jaysonragasa/MultiRDPClient.NET
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Release

Binaries are available in AppCenter
https://install.appcenter.ms/users/jaysondragasa-outlook.com/apps/multirdpclient.net/distribution_groups/public

Contents

Introduction . Background . Screen Shots . Features . Codes . Release History

Multi RDP Client .NET

Multi RDP Client .NET (formerly known as Multi Remote Desktop Client .NET) comes on handy when managing your RDP connections. A simple and friendly user interface for you to work and navigate easily through tabbed RDP remote window. Allows you to Import/Export .RDP files, Disconnect all connection at one click and Connect all your servers at one click as well. You can also change the resolution while working, set the window into fullscreen mode, and as well as enable window stretching and a lot more features!

Background

up
Thanks to AxInterop.MSTSCLib (mstscax.dll) an ActiveX COM Component which you can use to connect on Remote Desktop. So, I made a GUI for it for you to connect on your servers via terminal service on multiple window view in one application. How to use MSTSCAX.DLL?

  1. You must have the ActiveX file in your system called "mstscax.dll".
  2. if not, then you can Google for the file and download it, then make sure you registered it using "RegSvr32 ". I think that's one of the IIS package if you installed the Remote Desktop Web Connection.
  3. On the UI Design mode in VS2005 or 8. go to your toolbox and Open Choose Toolbox Items and look for Microsoft RDP Client Control in COM Components tab.

I'm guessing you successfully added that control in your toolbar. So I don't think I have to explain how to get that in your Form.

Screenshots

up

Main Window

https://raw.githubusercontent.com/jaysonragasa/MultiRDPClient.NET/master/Multi%20Remote%20Desktop%20Client%20.NET%20(ScreenShots)/MainWindow.jpg

Server Lists

https://raw.githubusercontent.com/jaysonragasa/MultiRDPClient.NET/master/Multi%20Remote%20Desktop%20Client%20.NET%20(ScreenShots)/ServerLists_Icon_Views.jpg

Server Group

https://raw.githubusercontent.com/jaysonragasa/MultiRDPClient.NET/master/Multi%20Remote%20Desktop%20Client%20.NET%20(ScreenShots)/GroupManagerWindow.jpg

Import

https://raw.githubusercontent.com/jaysonragasa/MultiRDPClient.NET/master/Multi%20Remote%20Desktop%20Client%20.NET%20(ScreenShots)/ImportWindow.jpg

About Window

https://raw.githubusercontent.com/jaysonragasa/MultiRDPClient.NET/master/Multi%20Remote%20Desktop%20Client%20.NET%20(ScreenShots)/AboutWindow.jpg

Features

up
Command Line Parameters - requested by: Simon Capewell

  • /sname "server name" Can open a new client window by providing a Server Name
  • /gname "group name" Can open a multiple client window by specifying the Group Name

Add, Edit, Delete Servers
Those words say it all.

Server Settings Window
the Server Settings window has the following:

  • General Tab
    • Server Name You can give your connection name
    • Server The host address or IP address
    • Custom Port - requested by: Simon Capewell. Allowing the RDP to connect to different port.
    • Username Your RD server Username
    • Password Your RD server Password
    • Description Your Server description
    • Group You can choose the group of your Server. You can also open Group Manager from there
    • Display Tab Desktop Sizes - some resolutions were requested by: Simon Capewell
      • 640 x 480
      • 800 x 600
      • 1024 x 768
      • 1120 x 700
      • 1152 x 864
      • 1280 x 800
      • 1280 x 1024
      • Custom Desktop Height and Width
      • Fullscreen
    • Colors
      • True Color (24 bit)
      • High Color (16 bit)
      • High Color (15 bit)
      • 256 Colors

Configuration Window

  • General Tab
    • Password
    • Your Startup Password
  • Display Tab
    • Hide when Minimize
      • If Enabled, the window hides and it self and you bring it up anytime by double clicking on notification icon in system tray.
      • If Disabled, the window just minimized and accessible in taskbar.
    • Notification Window
      • If Enabled, Notification window pops up everytime you hover into some controls.
      • if Disabled, You know what that means ..

Import/Export

  • Import from RDP file format
    You can import your current RDP files Note: Currently, the password made by MSTSC cannot be decrypted. I Still have to work on this
  • Export to RDP file format
    You can export the servers in RDP file format

Group Manager - requested by: Simon Capewell
You can create a group for your RDP connections.

Database
The app is using SQLite3 - ADO.NET instead of working with XML which can be very time-consuming.

Notification Icon
This icon sits on your system tray area and you can right click on it to show the context menu or double click to bring up the window when minimized or hidden.

The context menu items contains:

  • Servers - And under it contains the Groups and the Servers
  • Disconnect All
  • Configuration
  • Lock
  • Exit
  • Lock Application

For safety purposes, a Lock feature is added to lock the current application and the Password Window will show up after locking the application.

Startup Password - requested by: shmulyeng
For safety purposes, a Password feature is added before opening the application.

After entering 3 invalid passwords, CAPTCHA verification will show up in Password Window

Server Lists Panel
You can change the views in Server Lists panel in Detailed, Tiled, and Tree

  • Context Menu in Server Lists Panel - requested by: Simon Capewell and shmulyeng
    Context Menu will popup after right clicking on the items and you can Add, Edit, Delete, and Group Connect.
  • Collapse/Expand Server Lists Panel - requested by: Simon Capewell
    You can collapse or expand the server lists panel.
  • Groups - requested by: Simon Capewell
    Servers are arranged by Groups
  • Different Views - requested by: Simon Capewell
    You can set the Server lists view by Detailed, Tiled, and Tree

MDI Tabs - requested by: shmulyeng
Of course, Tabs can be very helpfull when selecting client windows

Disconnect All
Disconnects all connected RD clients.

Client Window

  • Connect, Disconnect, and Reconnect: This Connects, Disconnects, or Reconnects your RD connection.
  • Fullscreen: Sets the RD connection to Fullscreen. It can also ask you to resize the Resolution based on your Desktop Resolution
  • Fit To Window: The RD resolution can change based on the RD client window
    • Fit to Window
    • Stretch
  • Settings: Opens the server settings

Info Popup Window
This window automatically popups when hovered on the control showing a description of what the control can do.

Credits
I do give a lot of credits to the people who shared their Ideas, Custom Control, and Codes.

Credits can be found in my About Window

Code Snippets

up
A simple example on RDP connection to connect to a remote desktop.

// for example, I have my AxMsRdpClient control named rdpClient.
rdpClient.Server = "sever name here"; 
rdpClient.UserName = "your username on remote pc"; 
rdpClient.AdvancedSettings2.ClearTextPassword = "you password on remote pc";
// optional 
rdpClient.ColorDepth = 16; // int value can be 8, 15, 16, or 24
rdpClient.DesktopWidth = 1024; // int value 
rdpClient.DesktopHeight = 768; // int value 
rdpClient.FullScreen = true|false; // boolean value that can be True or False
// and connect 
rdpClient.Connect();  

Setting full screen in runtime is fairly simple

// just set the Fullsceen property to TRUE
rdpClient.Fullscreen = true;
// strecth the screen
rdpClient.AdvanceSettings3.SmartSizing = true; 

Points of interest about connection and disconnection

I implemented a Reconnect feature. But its not easy as calling Disconnect() and Connect().

You should wait until it properly disconnected and call Connect().

In AxMsRdpClient, there is a Connect property which acts as a Connection Status:

  • 1 = Connected
  • 0 = Disconnected

Now reconnecting can be done by doing this:

// call Disconnect() method on AxMsRdpClient
rdpClient.Disconnect();

// wait for the server to properly disconnect
while (rdpClient.Connected != 0)
{
    System.Threading.Thread.Sleep(1000);
    Application.DoEvents(); 
} 
// call Connect() method on AxMsRdpClient  

You can always implement your own way of reconnecting. The code above is just the very basic, I do not recommend it.

Here's my RDPFile Reader class

/*
    Author: Jayson Ragasa
    Application Developer
 *  ---
 *  RDPFileReader 1.0
 *  
 *  RDP File Settings - http://dev.remotenetworktechnology.com/ts/rdpfile.htm
 *  Terminal Services Team Blog - http://blogs.msdn.com/ts/archive/2008/09/02/specifying-the-ts-client-start-location-on-the-virtual-desktop.as

Related Skills

View on GitHub
GitHub Stars121
CategoryDevelopment
Updated24d ago
Forks156

Languages

C#

Security Score

95/100

Audited on Mar 4, 2026

No findings