基本信息
源码名称:C#远程桌面管理工具源码
源码大小:2.56M
文件格式:.rar
开发语言:C#
更新时间:2019-02-27
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 3 元×
微信扫码支付:3 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
C#实现远程桌面连接
using System; using System.Drawing; using System.Windows.Forms; namespace MultiRemoteDesktopClient { public partial class RemoteDesktopClient : Form { private int _lastPanelWidth = 0; private int _selIndex = 0; public RemoteDesktopClient(string[] args) { InitializeComponent(); InitializeControl(); InitializeControlEvents(); } public void InitializeControl() { this.m_View_SLIV_Details.Tag = View.Details; this.m_View_SLIV_Tile.Tag = View.Tile; this.toolbar_SLIV_Details.Tag = View.Details; this.toolbar_SLIV_Tile.Tag = View.Tile; GlobalHelper.infoWin.EnableInformationWindow = true; GlobalHelper.infoWin.AddControl(new object[] { this.lvServerLists, this.tabMDIChild, this.toolbar_EditSettings }); lvServerLists.AddControlForEmptyListItem(new object[] { toolbar_DeleteClient, toolbar_EditSettings, m_Edit_DeleteClient, m_File_EditSettings }); lvServerLists.AddControlForItemSelection(new object[] { toolbar_DeleteClient, toolbar_EditSettings, m_Edit_DeleteClient, m_File_EditSettings, lvServerListsContextMenu_DeleteClient, lvServerListsContextMenu_EditClientSettings }); this._lastPanelWidth = this.panelServerLists.Width; } public void InitializeControlEvents() { this.Shown = new EventHandler(RemoteDesktopClient_Shown); this.lvServerListsContextMenu_NewClient.Click = new EventHandler(ShowNewForm); this.lvServerListsContextMenu_DeleteClient.Click = new EventHandler(btnDelete_Click); this.lvServerListsContextMenu_EditClientSettings.Click = new EventHandler(OpenSettingsWindow); this.lvServerLists.ItemSelectionChanged = new ListViewItemSelectionChangedEventHandler(lvServerLists_ItemSelectionChanged); this.lvServerLists.DoubleClick = new EventHandler(lvServerLists_DoubleClick); this.lvServerLists.MouseDown = new MouseEventHandler(lvServerLists_MouseDown); //by http://bbs.cskin.net // server list context menu this.m_Edit_DeleteClient.Click = new EventHandler(btnDelete_Click); this.m_Edit_DeleteClient.Click = new EventHandler(btnDelete_Click); this.toolbar_DisconnectAll.Click = new EventHandler(btnDCAll_Click); this.toolbar_DeleteClient.Click = new EventHandler(btnDelete_Click); this.toolbar_ImportRDP.Click = new EventHandler(ImportExportRDPFile_Button_Click); this.toolbar_ExportRDP.Click = new EventHandler(ImportExportRDPFile_Button_Click); this.m_File_ImportRDP.Click = new EventHandler(ImportExportRDPFile_Button_Click); this.m_File_ExportRDP.Click = new EventHandler(ImportExportRDPFile_Button_Click); this.m_Help_About.Click = new EventHandler(aboutToolStripMenuItem_Click); this.btnHideServerLists.Click = new EventHandler(btnHideServerLists_Click); this.tsb_ServerLists.Click = new EventHandler(tsb_ServerLists_Click); this.m_View_SLIV_Details.Click = new EventHandler(IconViews); this.m_View_SLIV_Tile.Click = new EventHandler(IconViews); this.toolbar_SLIV_Details.Click = new EventHandler(IconViews); this.toolbar_SLIV_Tile.Click = new EventHandler(IconViews); this.tabMDIChild.SelectionChanged = new EventHandler(tabMDIChild_SelectionChanged); this.tabMDIChild.ClosePressed = new EventHandler(tabMDIChild_ClosePressed); } protected override void WndProc(ref Message m) { if (m.Msg == NativeMethods.WM_SHOWME) { ShowMe(); } try // cannot access a disposed object { base.WndProc(ref m); } catch (Exception ex) { // exception occurs sometimes ?? } } #region RDP Client Window Events void clientWin_ServerSettingsChanged(object sender, Database.ServerDetails sd, int ListIndex) { ListViewItem item = lvServerLists.Items[ListIndex]; if (item != null) { item.Text = sd.ServerName; item.SubItems[1].Text = sd.Server; item.SubItems[2].Text = sd.Description; item.Tag = sd; } } void clientWin_OnFormShown(object sender, EventArgs e, int ListIndex, IntPtr Handle) { RdpClientWindow rcw = (RdpClientWindow)sender; Crownwood.Magic.Controls.TabPage tabMDI = new Crownwood.Magic.Controls.TabPage(); //(rcw.Text, rcw.toolStrip1); tabMDI.Title = lvServerLists.Items[ListIndex].Text; tabMDI.ImageIndex = 0; tabMDI.Tag = rcw.Handle; rcw = null; tabMDI.Selected = true; tabMDIChild.TabPages.Add(tabMDI); } void clientWin_OnFormClosing(object sender, FormClosingEventArgs e, int ListIndex, IntPtr Handle) { lvServerLists.Items[ListIndex].ImageIndex = 1; foreach (Crownwood.Magic.Controls.TabPage tabMDI in tabMDIChild.TabPages) { if ((IntPtr)tabMDI.Tag == Handle) { tabMDIChild.TabPages.Remove(tabMDI); break; } } } void clientWin_OnFormActivated(object sender, EventArgs e, int ListIndex, IntPtr Handle) { foreach (Crownwood.Magic.Controls.TabPage tabMDI in tabMDIChild.TabPages) { if ((IntPtr)tabMDI.Tag == Handle) { tabMDI.Selected = true; break; } } } void clientWin_Disconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e, int ListIndex) { lvServerLists.Items[ListIndex].ImageIndex = 1; } void clientWin_Connected(object sender, EventArgs e, int ListIndex) { //lvServerLists.Items[ListIndex].ImageIndex = 0; } void clientWin_LoginComplete(object sender, EventArgs e, int ListIndex) { lvServerLists.Items[ListIndex].ImageIndex = 0; } void clientWin_Connecting(object sender, EventArgs e, int ListIndex) { lvServerLists.Items[ListIndex].ImageIndex = 2; } #endregion #region default control events void RemoteDesktopClient_Shown(object sender, EventArgs e) { GetServerLists(); } #region server lists void lvServerLists_DoubleClick(object sender, EventArgs e) { Database.ServerDetails sd = (Database.ServerDetails)lvServerLists.Items[this._selIndex].Tag; bool canCreateNewForm = true; string formTitlePattern = "Remote Desktop Client - {0}@{1}[{2}]"; string formTitle = string.Format(formTitlePattern, sd.Username, sd.ServerName, sd.Server); foreach (Form f in this.MdiChildren) { if (f.Text == formTitle) { f.Activate(); canCreateNewForm = false; break; } } if (canCreateNewForm) { RdpClientWindow clientWin = new RdpClientWindow(sd); clientWin.Connected = new Connected(clientWin_Connected); clientWin.Connecting = new Connecting(clientWin_Connecting); clientWin.LoginComplete = new LoginComplete(clientWin_LoginComplete); clientWin.Disconnected = new Disconnected(clientWin_Disconnected); clientWin.OnFormShown = new OnFormShown(clientWin_OnFormShown); clientWin.OnFormClosing = new OnFormClosing(clientWin_OnFormClosing); clientWin.OnFormActivated = new OnFormActivated(clientWin_OnFormActivated); clientWin.ServerSettingsChanged = new ServerSettingsChanged(clientWin_ServerSettingsChanged); clientWin.Text = formTitle; clientWin.MdiParent = this; clientWin.ListIndex = this._selIndex; clientWin.Show(); clientWin.Connect(); clientWin.Visible = true; } } void lvServerLists_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { this._selIndex = e.ItemIndex; } void lvServerLists_MouseDown(object sender, MouseEventArgs e) { ListViewHitTestInfo lvhi = lvServerLists.HitTest(new Point(e.X, e.Y)); if (lvhi.Item != null) { Database.ServerDetails sd = (Database.ServerDetails)lvhi.Item.Tag; status_TextStatus.Text = sd.ServerName " - " sd.Server; } else { status_TextStatus.Text = string.Empty; } } void IconViews(object sender, EventArgs e) { this.lvServerLists.View = (View)((ToolStripMenuItem)sender).Tag; m_View_SLIV.Image = ((ToolStripMenuItem)sender).Image; toolbar_SLIV.Image = ((ToolStripMenuItem)sender).Image; } #endregion #region common toolbar button events and also contains ServerSettingsWindow events private void ShowNewForm(object sender, EventArgs e) { ServerSettingsWindow ssw = new ServerSettingsWindow(); ssw.ShowDialog(); GetServerLists(); } void btnDelete_Click(object sender, EventArgs e) { Database.ServerDetails sd = (Database.ServerDetails)lvServerLists.Items[this._selIndex].Tag; DialogResult dr = MessageBox.Show("Are you sure you want to delete this server " sd.ServerName " from the server list", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { GlobalHelper.dbServers.DeleteByID(sd.UID); GetServerLists(); } } private void OpenSettingsWindow(object sender, EventArgs e) { Database.ServerDetails sd = (Database.ServerDetails)lvServerLists.Items[this._selIndex].Tag; ServerSettingsWindow ssw = new ServerSettingsWindow(sd); ssw.ApplySettings = new ApplySettings(ssw_ApplySettings); ssw.GetClientWindowSize = new GetClientWindowSize(ssw_GetClientWindowSize); ssw.ShowDialog(); GetServerLists(); } #region settings window event (check private void OpenSettingsWindow(object sender, EventArgs e) event) Rectangle ssw_GetClientWindowSize() { Database.ServerDetails sd = (Database.ServerDetails)lvServerLists.Items[this._selIndex].Tag; RdpClientWindow rdpClientWin = GetClientWindowByTitleParams(sd.Username, sd.ServerName, sd.Server); if (rdpClientWin != null) { return rdpClientWin.rdpClient.RectangleToScreen(rdpClientWin.rdpClient.ClientRectangle); } else { MessageBox.Show("The relative RDP Client Window for this server does not exists.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); Rectangle r = new Rectangle(0, 0, sd.DesktopWidth, sd.DesktopHeight); return r; } } void ssw_ApplySettings(object sender, Database.ServerDetails sd) { RdpClientWindow rdpClientWin = GetClientWindowByTitleParams(sd.Username, sd.ServerName, sd.Server); if (rdpClientWin != null) { rdpClientWin._sd = sd; rdpClientWin.Reconnect(true, false, false); } else { MessageBox.Show("The relative RDP Client Window for this server does not exists.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #endregion void btnDCAll_Click(object sender, EventArgs e) { DisconnectAll(); } void ImportExportRDPFile_Button_Click(object sender, EventArgs e) { if (sender == toolbar_ImportRDP || sender == m_File_ImportRDP) { ImportWindow iw = new ImportWindow(); iw.ShowDialog(); GetServerLists(); } else if (sender == toolbar_ExportRDP || sender == m_File_ExportRDP) { ExportWindow ew = new ExportWindow(ref this.lvServerLists); ew.ShowDialog(); } } #endregion #region show/hide toolbar and stats events private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e) { toolStrip.Visible = toolBarToolStripMenuItem.Checked; } private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e) { statusStrip.Visible = statusBarToolStripMenuItem.Checked; } #endregion #region client window layout private void LayoutMdi_Click(object sender, EventArgs e) { ToolStripMenuItem mItem = (ToolStripMenuItem)sender; LayoutMdi((MdiLayout)int.Parse(mItem.Tag.ToString())); } private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e) { foreach (Form childForm in MdiChildren) { childForm.Close(); } } #endregion void aboutToolStripMenuItem_Click(object sender, EventArgs e) { AboutWindow aw = new AboutWindow(); aw.ShowDialog(); } private void ExitToolsStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } void btnHideServerLists_Click(object sender, EventArgs e) { this._lastPanelWidth = this.panelServerLists.Width; // RDPClient Control workaround // lost its focus whenever we programatically resize the "panelServerLists" // and clicking on the rdp client control won't work as if it was disabled. // - // Activating the RDP Client Control inside the RDPClientWindow won't either work. this.panelServerLists.Enabled = false; this.panelServerLists.Width = 0; } void tsb_ServerLists_Click(object sender, EventArgs e) { this.panelServerLists.Width = this._lastPanelWidth; this.panelServerLists.Enabled = true; } void tabMDIChild_SelectionChanged(object sender, EventArgs e) { if (tabMDIChild.SelectedTab == null) { return; } foreach (Form f in this.MdiChildren) { if ((IntPtr)tabMDIChild.SelectedTab.Tag == f.Handle) { f.Activate(); break; } } } void tabMDIChild_ClosePressed(object sender, EventArgs e) { this.ActiveMdiChild.Close(); } #endregion #region methods public void GetServerLists() { Database.Servers s = new Database.Servers(); s.Read(); lvServerLists.Items.Clear(); foreach (Database.ServerDetails sd in s.ArrayListServers) { ListViewItem item = new ListViewItem(sd.ServerName); item.SubItems.Add(sd.Server); item.SubItems.Add(sd.Description); item.ImageIndex = 1; item.Tag = sd; lvServerLists.Items.Add(item); } } public RdpClientWindow GetClientWindowByTitleParams(params object[] args) { RdpClientWindow ret = null; string formTitlePattern = "Remote Desktop Client - {0}@{1}[{2}]"; string formTitle = string.Format(formTitlePattern, args); foreach (RdpClientWindow f in this.MdiChildren) { if (f.Text == formTitle) { ret = f; } } return ret; } void DisconnectAll() { foreach (RdpClientWindow f in this.MdiChildren) { f.Disconnect(); } } private void ShowMe() { if (WindowState == FormWindowState.Minimized) { WindowState = FormWindowState.Normal; } // get our current "TopMost" value (ours will always be false though) bool top = TopMost; // make our form jump to the top of everything TopMost = true; // set it back to whatever it was TopMost = top; } #endregion } }