zoukankan      html  css  js  c++  java
  • c#实现windows远程桌面连接程序

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

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

    远程桌面核心类库

    windows系统自带了远程桌面activex dll,目录:
    c:WindowsSystem32mstscax.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 SDKsWindowsv7.0ABinAxImp.exe" "c:WindowsSystem32mstscax.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 == 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
        }
    }
    

    推荐开源实现

    Palantir - Remote Desktop Manager
    https://www.codeproject.com/Articles/19836/Palantir-Remote-Desktop-Manager

    享受生活+创造
  • 相关阅读:
    NOIP2018 复赛提高组一等奖获奖名单
    JZOJ 5222. 【GDOI2018模拟7.12】A(权值线段树)
    NOIP2018 提高组复赛成绩-广东
    NOIP2018 总结
    NOIP 复赛注意事项
    JZOJ 5168. 冲击哥(贪心)
    数据库
    估计理论简介
    KMP
    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
  • 原文地址:https://www.cnblogs.com/theLife/p/6838745.html
Copyright © 2011-2022 走看看