使用winform制作windows远程桌面连接程序,windows自带了远程桌面连接,我们需要将远程桌面连接集成

到自己的winform程序,并实现管理远程主机的配置。

远程桌面核心类库

windows系统自带了远程桌面activex dll,目录:

c:\Windows\System32\mstscax.dll

此类库无法使用c#直接调用,介绍一个工具AxImp.exe

AxImp.exe

https://msdn.microsoft.com/zh-cn/library/8ccdh774(VS.80).aspx

ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。

控件转换

在cmd输入以下命令

"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\AxImp.exe" "c:\Windows\System32\mstscax.dll"

即可生成AxMSTSCLib.dll,MSTSCLib.dll

//远程连接核心方法
private AxMSTSCLib.AxMsRdpClient7 rdpc = null;
protected void OnCreateControl()
{
rdpc = new AxMSTSCLib.AxMsRdpClient7();
rdpc.OnDisconnected += new AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEventHandler(rdpc_OnDisconnected);
this.Controls.Add(rdpc);
rdpc.Dock = DockStyle.Fill;
rdpc.BringToFront();
} void rdpc_OnDisconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e)
{
//处理断开连接
} public void Disconnect()
{
try
{
if (rdpc.Connected == )
{
rdpc.Disconnect();
}
}
catch (Exception)
{ } } private void SetRdpClientProperties(Machine parMachine)
{
rdpc.Server = parMachine.MachineName;
rdpc.AdvancedSettings2.RDPPort = parMachine.Port;
rdpc.UserName = parMachine.UserName;
rdpc.Domain = parMachine.DomainName;
if (parMachine.Password != "")
{
rdpc.AdvancedSettings5.ClearTextPassword = parMachine.Password;
}
rdpc.AdvancedSettings5.RedirectDrives = parMachine.ShareDiskDrives;
rdpc.AdvancedSettings5.RedirectPrinters = parMachine.SharePrinters;
rdpc.ColorDepth = (int)parMachine.ColorDepth;
} public void Connect(Machine parMachine)
{
SetRdpClientProperties(parMachine);
rdpc.Connect();
} //远程主机配置
[Serializable()]
public class Machine
{
private string _RemoteDesktopConnectionName;
public string RemoteDesktopConnectionName
{
get { return _RemoteDesktopConnectionName; }
set { _RemoteDesktopConnectionName = value; }
} private string _MachineName;
public string MachineName
{
get { return _MachineName; }
set { _MachineName = value; }
}
private string _DomainName;
public string DomainName
{
get { return _DomainName; }
set { _DomainName = value; }
} private string _UserName;
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
} private string _Password;
public string Password
{
get { return _Password; }
set { _Password = value; }
} private bool _AutoConnect;
public bool AutoConnect
{
get { return _AutoConnect; }
set { _AutoConnect = value; }
} private bool _ShareDiskDrives;
public bool ShareDiskDrives
{
get { return _ShareDiskDrives; }
set { _ShareDiskDrives = value; }
} private bool _SharePrinters;
public bool SharePrinters
{
get { return _SharePrinters; }
set { _SharePrinters = value; }
} private bool _SavePassword;
public bool SavePassword
{
get { return _SavePassword; }
set { _SavePassword = value; }
} private Colors _ColorDepth;
public Colors ColorDepth
{
get { return _ColorDepth; }
set { _ColorDepth = value; }
} public int Port
{
get
{
return _Port;
} set
{
_Port = value;
}
} private int _Port; public enum Colors
{
HighColor15 = ,
HighColor16 = ,
Color256 = ,
TrueColor =
}
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

 
 

原文链接:http://www.cnblogs.com/theLife/p/6838745.html

使用winform制作windows远程桌面连接程序,windows自带了远程桌面连接,我们需要将远程桌面连接集成

到自己的winform程序,并实现管理远程主机的配置。

远程桌面核心类库

windows系统自带了远程桌面activex dll,目录:

c:\Windows\System32\mstscax.dll

此类库无法使用c#直接调用,介绍一个工具AxImp.exe

AxImp.exe

https://msdn.microsoft.com/zh-cn/library/8ccdh774(VS.80).aspx

ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。

控件转换

在cmd输入以下命令

"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\AxImp.exe" "c:\Windows\System32\mstscax.dll"

即可生成AxMSTSCLib.dll,MSTSCLib.dll

远程桌面连接核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
//远程连接核心方法
private AxMSTSCLib.AxMsRdpClient7 rdpc = null;
protected void OnCreateControl()
{
  rdpc = new AxMSTSCLib.AxMsRdpClient7();
  rdpc.OnDisconnected += new AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEventHandler(rdpc_OnDisconnected);
  this.Controls.Add(rdpc);
  rdpc.Dock = DockStyle.Fill;
  rdpc.BringToFront();
}
 
void rdpc_OnDisconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e)
{
  //处理断开连接
}
 
 
public void Disconnect()
{
  try
  {
    if (rdpc.Connected == 1)
    {
      rdpc.Disconnect();
    }
  }
  catch (Exception)
  {
 
  }
 
}
 
private void SetRdpClientProperties(Machine parMachine)
{
  rdpc.Server = parMachine.MachineName;
  rdpc.AdvancedSettings2.RDPPort = parMachine.Port;
  rdpc.UserName = parMachine.UserName;
  rdpc.Domain = parMachine.DomainName;
  if (parMachine.Password != "")
  {
    rdpc.AdvancedSettings5.ClearTextPassword = parMachine.Password;
  }
  rdpc.AdvancedSettings5.RedirectDrives = parMachine.ShareDiskDrives;
  rdpc.AdvancedSettings5.RedirectPrinters = parMachine.SharePrinters;
  rdpc.ColorDepth = (int)parMachine.ColorDepth;
}
 
public void Connect(Machine parMachine)
{
  SetRdpClientProperties(parMachine);
  rdpc.Connect();
}
 
//远程主机配置
[Serializable()]
public class Machine
{
  private string _RemoteDesktopConnectionName;
  public string RemoteDesktopConnectionName
  {
    get { return _RemoteDesktopConnectionName; }
    set { _RemoteDesktopConnectionName = value; }
  }
 
  private string _MachineName;
  public string MachineName
  {
    get { return _MachineName; }
    set { _MachineName = value; }
  }
  private string _DomainName;
  public string DomainName
  {
    get { return _DomainName; }
    set { _DomainName = value; }
  }
 
  private string _UserName;
  public string UserName
  {
    get { return _UserName; }
    set { _UserName = value; }
  }
 
  private string _Password;
  public string Password
  {
    get { return _Password; }
    set { _Password = value; }
  }
 
  private bool _AutoConnect;
  public bool AutoConnect
  {
    get { return _AutoConnect; }
    set { _AutoConnect = value; }
  }
 
  private bool _ShareDiskDrives;
  public bool ShareDiskDrives
  {
    get { return _ShareDiskDrives; }
    set { _ShareDiskDrives = value; }
  }
 
  private bool _SharePrinters;
  public bool SharePrinters
  {
    get { return _SharePrinters; }
    set { _SharePrinters = value; }
  }
 
  private bool _SavePassword;
  public bool SavePassword
  {
    get { return _SavePassword; }
    set { _SavePassword = value; }
  }
 
  private Colors _ColorDepth;
  public Colors ColorDepth
  {
    get { return _ColorDepth; }
    set { _ColorDepth = value; }
  }
 
  public int Port
  {
    get
    {
      return _Port;
    }
 
    set
    {
      _Port = value;
    }
  }
 
  private int _Port;
 
 
  public enum Colors
  {
    HighColor15 = 15,
    HighColor16 = 16,
    Color256 = 8,
    TrueColor = 24
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

 
 

原文链接:http://www.cnblogs.com/theLife/p/6838745.html

c#实现windows远程桌面连接程序代码的更多相关文章

  1. c#实现windows远程桌面连接程序

    c#实现windows远程桌面连接程序 使用winform制作windows远程桌面连接程序,windows自带了远程桌面连接,我们需要将远程桌面连接集成 到自己的winform程序,并实现管理远程主 ...

  2. Windows远程桌面连接Mac OS X

    Windows远程桌面连接Mac OS X   第一步:Mac OS X 10.5 已经增加支持了由VNC Viewer访问的功能,设置如下:   系统偏好设置-共享-勾选“屏幕共享”,然后在电脑设置 ...

  3. 解决Windows远程桌面连接每次都提示输入密码的问题,远程桌面记不住密码

    FROM:http://www.veryhuo.com/a/view/80444.html Windows 远程桌面连接几乎每天都用,所以使用的方便性非常重要.如果你经常用,也许会发现在某些系统中,每 ...

  4. 本地Windows远程桌面连接阿里云Ubuntu服务器

    本地Windows远程桌面连接阿里云Ubuntu 16.04服务器: 1.目的:希望通过本地的Windows远程桌面连接到阿里云的Ubuntu服务器,通过远程桌面图形界面的方式操作服务器. 2.条件: ...

  5. windows 远程桌面连接 RPi 2B

    /************************************************************************* * windows 远程桌面连接 RPi 2B * ...

  6. 通过xrdp服务实现windows远程桌面连接树莓派

    如题:通过xrdp服务实现windows远程桌面连接树莓派 受同学影响,最近接触到了树莓派,又加上自己技痒想试一下这个小东西究竟能做什么,所以开始了树莓派学习之旅. 正题开始-xrdp实现window ...

  7. 树莓派进阶之路 (024) - windows远程桌面连接树莓派通过xrdp服务(转)

    本文转载:http://www.cnblogs.com/edgexie/p/6527992.html 在网上看到很多关于windows远程桌面连接树莓派的教程.我也按照教程试过了,遇到了几个坑.特意记 ...

  8. CentOS7配置图形界面及设置vnc远程连接、windows远程桌面连接

    安装CentOS桌面 yum groupinstall "GNOME Desktop" 重启,进入终端,将启动模式变更为图形模式 systemctl set-default gra ...

  9. [转帖]CentOS7安装xrdp(windows远程桌面连接linux)

    CentOS7安装xrdp(windows远程桌面连接linux) https://blog.csdn.net/sgrrmswtvt/article/details/81869208 You Konw ...

随机推荐

  1. 【目录】LeetCode Java实现

    这里记录一下自己刷的LeetCode题目. 有些博客用英文阐述自己的思路和收获,相当于练习一下英文的表达能力. 比较好的题目有加粗. 1. Two Sum 3. Longest Substring W ...

  2. 【Java】 剑指offer(65) 不用加减乘除做加法

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×. ...

  3. 全排列问题(递归&非递归&STL函数)

    问题描述: 打印输出1-9的所有全排序列,或者打印输出a-d的全排列. 思路分析: 将每个元素放到余下n-1个元素组成的队列最前方,然后对剩余元素进行全排列,依次递归下去. 比如:1 2 3 为例首先 ...

  4. BootstrapTable使用实例

    一.bootstrapTable简单使用: <link rel="stylesheet" href="./static/libs/bootstrap/css/boo ...

  5. dp的最优性

    dp看似像递推,但是有一点不一样,虽然都是先处理完子过程并由此退出最终的,但是dp满足任何过程的最优性,dp用子过程最优来保证最终结果的最优性.

  6. 算法初级面试题05——哈希函数/表、生成多个哈希函数、哈希扩容、利用哈希分流找出大文件的重复内容、设计RandomPool结构、布隆过滤器、一致性哈希、并查集、岛问题

    今天主要讨论:哈希函数.哈希表.布隆过滤器.一致性哈希.并查集的介绍和应用. 题目一 认识哈希函数和哈希表 1.输入无限大 2.输出有限的S集合 3.输入什么就输出什么 4.会发生哈希碰撞 5.会均匀 ...

  7. 利用python计算多边形面积

    最近业务上有一个需求,给出多边形面积. Google了一下,发现国内论坛给的算法都是你抄我我抄你,也不验证一下是否正确, 从 博客园到csdncsdn 然后传播到国内各个角落...真是无力吐槽了. 直 ...

  8. [CF776D]The Door Problem

    思路: 并查集维护每个开关的状态on[i]和off[i] .假设灯L由开关S1和S2控制.如果开关是亮的,则S1和S2的状态相反:如果开关是灭的,则S1和S2的状态相同.当一个开关状态已知时,可以得知 ...

  9. 一个servlet处理多个请求或者叫方法

    http://blog.csdn.net/qq_25201665/article/details/52037607

  10. javascript加密PHP解密---jsencrypt

    今天偶然发现jsencrypt这玩意,之前做"直播室聊天"时 数据传输明文问题没解决; 一直苦苦寻找技术解决方案今天勉强找了个: 原理:javascript加密PHP解密: 完全依 ...