欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-03 16:53:16
使用winform制作windows远程桌面连接程序,windows自带了远程桌面连接,我们需要将远程桌面连接集成 到自己的winform程序,并实现管理远程主机的配...

使用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
  }
}

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