使用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 == 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 } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论