c#實(shí)現(xiàn)windows遠(yuǎn)程桌面連接程序代碼
使用winform制作windows遠(yuǎn)程桌面連接程序,windows自帶了遠(yuǎn)程桌面連接,我們需要將遠(yuǎn)程桌面連接集成
到自己的winform程序,并實(shí)現(xiàn)管理遠(yuǎn)程主機(jī)的配置。
遠(yuǎn)程桌面核心類庫
windows系統(tǒng)自帶了遠(yuǎn)程桌面activex dll,目錄:
c:\Windows\System32\mstscax.dll
此類庫無法使用c#直接調(diào)用,介紹一個(gè)工具AxImp.exe
AxImp.exe
https://msdn.microsoft.com/zh-cn/library/8ccdh774(VS.80).aspx
ActiveX 控件導(dǎo)入程序?qū)?ActiveX 控件的 COM 類型庫中的類型定義轉(zhuǎn)換為 Windows 窗體控件。
控件轉(zhuǎn)換
在cmd輸入以下命令
"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\AxImp.exe" "c:\Windows\System32\mstscax.dll"
即可生成AxMSTSCLib.dll,MSTSCLib.dll
遠(yuǎn)程桌面連接核心代碼
//遠(yuǎn)程連接核心方法
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();
}
//遠(yuǎn)程主機(jī)配置
[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
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Unity中實(shí)現(xiàn)簡(jiǎn)單的偽時(shí)間同步
這篇文章主要介紹了在Unity中實(shí)現(xiàn)簡(jiǎn)單的偽時(shí)間同步,為什么說是偽同步呢,因?yàn)閮H僅是獲取的數(shù)據(jù)庫所在服務(wù)器的系統(tǒng)時(shí)間,分享給大家,有需要的小伙伴可以參考下2015-03-03
那些年,我還在學(xué)習(xí)C# 學(xué)習(xí)筆記
那些年學(xué)了ASP.NET后,才開始學(xué)習(xí)C#,說來也怪,怎么學(xué)了ASP.NET才來學(xué)習(xí)C#,其實(shí)沒有什么的2012-03-03
C# 實(shí)現(xiàn)ADSL自動(dòng)斷網(wǎng)和撥號(hào)的方法(適用于撥號(hào)用戶)
下面小編就為大家?guī)硪黄狢# 實(shí)現(xiàn)ADSL自動(dòng)斷網(wǎng)和撥號(hào)的方法(適用于撥號(hào)用戶)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
C#實(shí)現(xiàn)貨幣金額數(shù)字轉(zhuǎn)大寫漢字
這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)貨幣金額數(shù)字轉(zhuǎn)大寫漢字功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01

