1、注册控件:regsvr32 C:\Windows\System32\mstscax.dll。

2、添加RDP Control控件到工具箱中。我选择的RDP Client Control (redistributable) - version 9

3、在VS项目中引用C:\Windows\System32\mstscax.dll

4、RdpTabPage类

using System;
using System.Windows.Forms; namespace RdpClient
{
public class RdpTabPage : TabPage
{
AxMSTSCLib.AxMsRdpClient9 rdpc = null;
protected override void OnCreateControl()
{
rdpc = new AxMSTSCLib.AxMsRdpClient9();
rdpc.OnDisconnected += new AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEventHandler(rdpc_OnDisconnected);
this.Controls.Add(rdpc);
rdpc.Dock = DockStyle.Fill;
base.OnCreateControl();
} void rdpc_OnDisconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e)
{
((TabControl)this.Parent).TabPages.Remove(this);
} public void Disconnect()
{
try
{
if (rdpc.Connected == )
{
rdpc.Disconnect();
}
}
catch (Exception) { }
} private void SetRdpClientProperties(RdpInfo info)
{
rdpc.Server = info.MachineName;
rdpc.UserName = info.UserName;
rdpc.Domain = "";
rdpc.AdvancedSettings9.RDPPort = info.RdpPort;
rdpc.AdvancedSettings9.ClearTextPassword = info.Password;
rdpc.AdvancedSettings9.RedirectDrives = true;
rdpc.AdvancedSettings9.RedirectPrinters = true;
rdpc.AdvancedSettings9.RedirectSmartCards = true;
rdpc.AdvancedSettings9.ConnectToServerConsole = true;
rdpc.ColorDepth = ;
rdpc.Dock = DockStyle.Fill;
} public void Connect(RdpInfo info)
{
SetRdpClientProperties(info);
rdpc.Connect();
}
}
}

5、主窗体

using System;
using System.Windows.Forms;

namespace RdpClient
{
public partial class Form_Main : Form
{
#region 构造
public Form_Main()
{
InitializeComponent();
}
#endregion #region 方法
/// <summary>
/// 绑定远程桌面列表
/// </summary>
private void BindMenuItem()
{
tsb_Rdps.DropDownItems.Clear();
if (Config.RdpInfos == null) return; foreach (var info in Config.RdpInfos.Items)
{
ToolStripMenuItem item = new ToolStripMenuItem();
item.ImageScaling = ToolStripItemImageScaling.SizeToFit;
item.Name = string.Format("MenuItem{0}", info.AliasName);
item.Text = info.AliasName;
item.Tag = info;
tsb_Rdps.DropDownItems.Add(item);
}
} public void RdpConnect(RdpInfo info)
{
RdpTabPage rdpTab = new RdpTabPage();
rdpTab.Text = info.AliasName; foreach (TabPage tp in tab_Rdps.TabPages)
{
if (tp.Text == rdpTab.Text)
{
tab_Rdps.SelectTab(tp);
return;
}
} tab_Rdps.TabPages.Add(rdpTab);
rdpTab.Connect(info);
tab_Rdps.SelectTab(rdpTab);
}
#endregion #region 事件
private void Form_Main_Load(object sender, EventArgs e)
{
Config.Load();
BindMenuItem();
}
private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("确定退出程序?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
{
e.Cancel = true;
return;
}
} /// <summary>
/// 连接远程桌面
/// </summary>
private void tsb_Rdps_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
RdpInfo item = e.ClickedItem.Tag as RdpInfo;
if (item == null) return; RdpConnect(item);
}
        /// <summary>
/// 双击选项卡时关闭相应选项卡
/// </summary>
private void tab_Rdps_DoubleClick(object sender, EventArgs e)
{
if (tab_Rdps.SelectedIndex < 0) return; RdpTabPage rdpTab = (RdpTabPage)tab_Rdps.SelectedTab;
if (rdpTab != null)
{
rdpTab.Disconnect();
}
}
        /// <summary>
/// 关闭当前Tab页的远程桌面
/// </summary>
private void tsb_Disconnect_Click(object sender, EventArgs e)
{
if (tab_Rdps.SelectedIndex < ) return; RdpTabPage rdpTab = (RdpTabPage)tab_Rdps.SelectedTab;
if (rdpTab != null)
{
rdpTab.Disconnect();
}
} /// <summary>
/// 关闭所有Tab页的远程桌面
/// </summary>
private void tsb_DisconnectAll_Click(object sender, EventArgs e)
{
foreach (TabPage tab in tab_Rdps.TabPages)
{
RdpTabPage rdpTab = (RdpTabPage)tab;
rdpTab.Disconnect();
}
} /// <summary>
/// 最大化
/// </summary>
private void tsb_Max_Click(object sender, EventArgs e)
{
if (tab_Rdps.SelectedIndex < ) return; RdpTabPage rdpTab = (RdpTabPage)tab_Rdps.SelectedTab;
if (rdpTab != null)
{
var rdpc = rdpTab.Controls[] as AxMSTSCLib.AxMsRdpClient9;
rdpc.FullScreen = true;
rdpc.FullScreenTitle = rdpTab.Text;
}
} private void tsb_Config_Click(object sender, EventArgs e)
{
Form_Settings form = new Form_Settings();
if (form.ShowDialog() == DialogResult.OK)
{
BindMenuItem();
}
} private void tsb_About_Click(object sender, EventArgs e)
{
MessageBox.Show("远程桌面", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
}
}

6、程序下载地址

https://pan.baidu.com/s/1Fcolic2QAcNANJszscVUjg

C#远程桌面连接工具的更多相关文章

  1. ssh&amp;远程桌面连接工具finalshell

    无意间发现的一款工具,有兴趣的可以看看点我进入官网 百度云盘 链接:https://pan.baidu.com/s/1wMuGav64e2zV91QznBkvag 密码:zpyb软件特点直接搬运的官方 ...

  2. ubuntu安装远程桌面连接工具

    1. 安装xrdp sudo apt-get -y install xrdp   2.安装vnc4server sudo apt-get install vnc4server   3.安装xubunt ...

  3. 远程桌面连接工具 Remote Desktop Manager 9.1.2.0 Enterprise 多国语言绿色版附注册码 简单使用

    1:修改成中文简体 2: 注册破解  (记得一定要先断网)   admin admin@admin.com 31GKI-OK1HY-59H35-Y8GPB-8WDY6 3 : 创建连接   搞定

  4. Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)

    远程桌面服务开启之后,可以方便的远程管理服务器或计算机.为生活和工作带来不少便利呢,很多小伙伴还不知道怎么开启win7远程桌面吧(下面咗嚛以内网远程桌面为例)   工具/原料 Win7 Win7远程桌 ...

  5. CentOS6.5下VNC Server远程桌面配置详解

    参考文献: (总结)CentOS Linux下VNC Server远程桌面配置详解 远程桌面连接工具VNC——license Key 我的下载地址为 太平洋下载 VNC连接黑屏的问题 centos 6 ...

  6. Win10 远程桌面连接出现“要求的函数不受支持”的解决办法之修改注册表

    问题起因 笔者自己在阿里云上搞服务器,有一台 Windows Server 必须通过远程桌面连接来管理,由于没能完全关掉 Win10 自带的烦人的系统更新,导致昨天安装完更新后出现了连接远程桌面时“要 ...

  7. 【转】XP系统远程桌面连接2012R2提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证

    一.背景 因对方客户的服务器是内网的,需要操作更新服务器的数据库表信息,因此远程对方客户办公司的电脑远程服务器:但是在远程桌面连接出现问题. 二.错误问题 错误问题:“远程计算机需要网络级别身份验证, ...

  8. xp 如何打开(进行)远程桌面连接

    http://apps.hi.baidu.com/share/detail/31102654http://help.360.cn/5030804/40072526.htmlhttp://hi.baid ...

  9. Xrdp - 通过Windows的RDP连接Linux远程桌面(Ubuntu/CentOS/Redhat 7)(转载)

            您多久访问一次Linux桌面? 您使用什么工具来访问远程桌面? Xrdp是一个开源工具,允许用户通过Windows RDP访问Linux远程桌面. 除了Windows RDP之外,xr ...

随机推荐

  1. 97. Interleaving String (String; DP)

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...

  2. 38. Count and Say (String; DP)

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  3. .NET4.0的listview与DataPager的结合使用时的模板编辑

    1.设置listview模板样式: <asp:ListView ID="ListView1" runat="server" DataSourceID=&q ...

  4. 通过BeanShell获取UUID并将参数传递给Jmeter

    有些HTTPS请求报文的报文体中包含由客户端生成的UUID,在用Jmeter做接口自动化测试的时候,因为越过了客户端,直接向服务器端发送报文,所以,需要在Jmeter中通过beanshell获取UUI ...

  5. 数据分页c#

    存储过程分页的全套代码aspx页面的代码using System;using System.Collections.Generic;using System.Linq;using System.Web ...

  6. install pip(mac)

    simple method:  sudo easy_install pip you have done!and can install the other py programs using pip ...

  7. 【Linux】SVN的安装和配置

    SVN SVN:SVN是Subversion的简称,是一种开放代码的版本控制系统,相比较RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制器服务已从CVS迁移到Su ...

  8. 《Delphi XE6 android 编程入门教程》推荐

    近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...

  9. composer 安装扩展失败的决绝方法

    https://getyii.com/topic/32

  10. Field '***********' doesn't have a default value

    今天做配置文件一直报这个错误: 原因是主键是integer类型,没有设置自增模式,所以会出现这个问题,是表的结构问题.更改用navicat