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. Python3 chr() 函数

    Python3 chr() 函数 Python3 内置函数 描述 chr() 用一个整数作参数,返回一个对应的字符. 语法 以下是 chr() 方法的语法: chr(i) 参数 i -- 可以是 10 ...

  2. 【校招面试 之 C/C++】第20题 C++ STL(二)之Vector

    1.vector的动态增长 当添加元素时,如果vector空间大小不足,则会以原大小的两倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间.vector的空 ...

  3. swift - VFL

    1.VFL语法总结: //(1)“H”表示水平方向,“V”表示垂直方向 //(2)“|”表示父视图的边界 //(3)“[]”表示这是一个视图UIView的子类,可以组合多个条件,条件用"() ...

  4. springmvc中@RequestMapping的使用

    通过RequestMapping注解可以定义不同的处理器映射规则. 1.1 URL路径映射 @RequestMapping(value="/item")或@RequestMappi ...

  5. JVM家族史考【转】

    说起Java虚拟机,许多Java程序员都会潜意识地把它与Sun(虽然太阳已然西落,但永远值得被记忆) HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA JRockit和IBM J9,但大 ...

  6. git 记住用户名和密码

    git 记住用户名和密码 在使用 git 时,如果用的是 HTTPS 的方式,则每次提交,都会让输入用户名和密码,久而久之,就会感觉非常麻烦,那么该如何解决呢? 1. 使用 SSH,添加 ssh ke ...

  7. C语言中以字符串形式输出枚举变量

    C语言中以字符串形式输出枚举变量 摘自:https://blog.csdn.net/haifeilang/article/details/41079255 2014年11月13日 15:17:20 h ...

  8. activemq.bat 在window7 x64下启动(安装)报错解决方案

    在启动  apache-activemq-5.15.2/activemq.bat  时候报错,提示以下信息: wrapper | --> Wrapper Started as Consolewr ...

  9. jquery中innerWidth(),outerWidth(),outerWidth(true)和width()的区别

    jquery中innerWidth(),outerWidth(),outerWidth(true)和width()的区别 var a = 元素本身的宽度: width() = a: innerWidt ...

  10. 【commons-io】File对文件与目录的处理&FileUtis,IOUtils,FilenameUtils工具的使用

    -------------------File的使用-------------- 1.File类对文件的处理 1.1目录结构:  1.2测试对文件Test.txt处理: // 测试文件 @Test p ...