当前位置: 首页 > news >正文

c#使用多个远程桌面连接

写在前面:使用Windows Server服务器的朋友可以找到连接多个远程桌面的功能,但使用Xp操作系统就不行了。远程桌面功能就是使用mstsc这个文件的。在system32文件夹可以找到MSTSCAX.DLL这个动态连接库,这是实现远程连接的主要组件。下载介绍一个用C#编写远程桌面功能,可以连接多个Windows服务器。

源代码
http://www.codeproject.com/KB/cs/RemoteDesktopClient.aspx
你可以到上面的网址了解到更加详细的信息

效果图
下图的左边是一个远程列表,右边是MDI显示区域,可以显示多个远程界面。
 
下图是这个工具的说明,是使用Vs2008 RTM开发的,.Net版本是3.5Sp1。
 

源代码分析
相信大家对这个程序最感兴趣的地方是连接mstsc动态链接库的代码。
其中rdpClient 是AxMSTSCLib.AxMsRdpClient 类型对象。
声明如下:
public AxMSTSCLib.AxMsRdpClient rdpClient;
连接远程

        public void Connect()
        {
            Status("Starting ...");
            rdpClient.Connect();
        }


断开远程连接

        public void Disconnect()
        {
            Status("Disconnecting ...");
            rdpClient.DisconnectedText = "Disconnected";

            if (rdpClient.Connected != 0)
            {
                rdpClient.Disconnect();
            }
        }


重新连接远程对象
连接的过程中需要指定服务器,用户名,密码等等。

        public void Reconnect(bool hasChanges, bool isFitToWindow)
        {
            Disconnect();

            Status("Waiting for the server to properly disconnect ...");

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

            Status("Reconnecting ...");

            if (hasChanges)
            {
                rdpClient.Server = this._ss.Server;
                rdpClient.UserName = this._ss.Username;
                rdpClient.AdvancedSettings2.ClearTextPassword = this._ss.Password;
                rdpClient.ColorDepth = this._ss.ColorDepth;

                this._isFitToWindow = isFitToWindow;

                if (isFitToWindow)
                {
                    rdpClient.DesktopWidth = this.rdpClient.Width;
                    rdpClient.DesktopHeight = this.rdpClient.Height;
                }
                else
                {
                    rdpClient.DesktopWidth = this._ss.DesktopWidth;
                    rdpClient.DesktopHeight = this._ss.DesktopHeight;
                }

                rdpClient.FullScreen = this._ss.Fullscreen;
            }

            Connect();
        }


在连接的过程中,会使用大量Com接口函数。
这一程序,可以作为.Net实现远程桌面的重要参考。

转载于:https://www.cnblogs.com/gllgsoft/archive/2010/04/30/1725210.html

相关文章:

  • [存档]名词解释
  • 单链表中一个插入操作的分析
  • js如何打印object对象
  • 使用Apache CXF创建简单Web Service
  • java中Keytool的使用总结 (加密 密钥(key)和证书(certificates))
  • 又到母亲节
  • Java学习的好群,极力推荐!
  • linux svn 客户端基本使用命令
  • 发行盗版windows的组织为何热衷于更改系统设置
  • 2017年PHP程序员未来路在何方
  • xml操作工具类
  • xml报文理解 -----转-----
  • HP-UX 11i v2上Oracle10.2基本安装指南
  • Chrome审查元素【Network】Preserve log
  • 【STM32 .Net MF开发板学习-01】Hello world
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【面试系列】之二:关于js原型
  • 3.7、@ResponseBody 和 @RestController
  • C++类的相互关联
  • C++入门教程(10):for 语句
  • js递归,无限分级树形折叠菜单
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • select2 取值 遍历 设置默认值
  • socket.io+express实现聊天室的思考(三)
  • SpringBoot几种定时任务的实现方式
  • webpack4 一点通
  • Web设计流程优化:网页效果图设计新思路
  • XML已死 ?
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 机器学习学习笔记一
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 听说你叫Java(二)–Servlet请求
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • !$boo在php中什么意思,php前戏
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C)一些题4
  • (搬运以学习)flask 上下文的实现
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (图)IntelliTrace Tools 跟踪云端程序
  • (正则)提取页面里的img标签
  • (转)jdk与jre的区别
  • .NET的数据绑定
  • .net快速开发框架源码分享
  • /proc/vmstat 详解
  • @Async注解的坑,小心
  • @Autowired 与@Resource的区别
  • @RestController注解的使用
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [100天算法】-目标和(day 79)