public static void AddDockingMenuItems(ContextMenuStrip menu, ServerBase server) { bool isConnected = server.IsConnected; bool isClientFullScreen = server.IsClientFullScreen; ToolStripMenuItem toolStripMenuItem = new DelegateMenuItem("全屏", MenuNames.SessionFullScreen, delegate { ServerTree.Instance.SelectedNode = server; server.GoFullScreen(); }); toolStripMenuItem.Enabled = (isConnected && !isClientFullScreen); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("取消停靠", MenuNames.SessionUndock, server.Undock); toolStripMenuItem.Enabled = (server.IsClientDocked && !isClientFullScreen); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("取消停靠并连接", MenuNames.SessionUndockAndConnect, delegate { server.Undock(); server.Connect(); }); toolStripMenuItem.Enabled = (server.IsClientDocked && !isConnected && !isClientFullScreen); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("停靠", MenuNames.SessionDock, server.Dock); toolStripMenuItem.Enabled = server.IsClientUndocked; menu.Items.Add(toolStripMenuItem); }
public static void AddMaintenanceMenuItems(ContextMenuStrip menu, ServerBase server) { ToolStripMenuItem toolStripMenuItem = new DelegateMenuItem("删除服务器", MenuNames.EditRemove, delegate { ServerTree.Instance.ConfirmRemove(server, askUser: true); }); toolStripMenuItem.Enabled = server.CanRemove(popUI: false); menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("添加到收藏夹", MenuNames.EditAddToFavorites, delegate { FavoritesGroup.Instance.AddReference(server); }); toolStripMenuItem.Enabled = server.AllowEdit(popUI: false); menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("属性", MenuNames.EditProperties, delegate { server.DoPropertiesDialog(); }); toolStripMenuItem.Enabled = server.HasProperties; menu.Items.Add(toolStripMenuItem); }
public static void AddSessionMenuItems(ContextMenuStrip menu, ServerBase server) { bool isConnected = server.IsConnected; ToolStripMenuItem toolStripMenuItem = new DelegateMenuItem("连接", MenuNames.SessionConnect, server.Connect); toolStripMenuItem.Enabled = !isConnected; menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("连接为...", MenuNames.SessionConnectAs, server.DoConnectAs); toolStripMenuItem.Enabled = !isConnected; menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("重新连接", MenuNames.SessionReconnect, server.Reconnect); toolStripMenuItem.Enabled = isConnected; menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = menu.Items.Add("发送按键", MenuNames.SessionSendKeys); toolStripMenuItem.Enabled = isConnected; AddSendKeysMenuItems(toolStripMenuItem, () => server); if (RdpClient.SupportsRemoteSessionActions) { toolStripMenuItem = menu.Items.Add("远程动作", MenuNames.SessionRemoteActions); toolStripMenuItem.Enabled = isConnected; AddRemoteActionsMenuItems(toolStripMenuItem, () => server); } menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("断开连接", MenuNames.SessionDisconnect, server.Disconnect); toolStripMenuItem.Enabled = isConnected; menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("注销登录", MenuNames.SessionLogOff, server.LogOff); toolStripMenuItem.Enabled = (!Policies.DisableLogOff && isConnected); menu.Items.Add(toolStripMenuItem); menu.Items.Add(new DelegateMenuItem("会话列表", MenuNames.SessionListSessions, delegate { Program.ShowForm(new ListSessionsForm(server)); })); }
private void PopulateNodeContextMenu(ContextMenuStrip menu, RdcTreeNode node) { menu.Items.Clear(); if (node == null) { if (AnyOpenedEditableFiles()) { menu.Items.Add(new DelegateMenuItem("添加服务器", MenuNames.EditAddServer, AddNodeDialogHelper.AddServersDialog)); menu.Items.Add(new DelegateMenuItem("导入服务器配置", MenuNames.EditImportServers, AddNodeDialogHelper.ImportServersDialog)); menu.Items.Add("-"); menu.Items.Add(new DelegateMenuItem("添加群组", MenuNames.EditAddGroup, AddNodeDialogHelper.AddGroupDialog)); } else { ToolStripMenuItem toolStripMenuItem = new ToolStripMenuItem("Please open or create a file"); toolStripMenuItem.Enabled = false; menu.Items.Add(toolStripMenuItem); } return; } GroupBase groupBase = node as GroupBase; if (groupBase != null) { groupBase.AnyOrAllConnected(out bool anyConnected, out bool allConnected); ToolStripMenuItem toolStripMenuItem = new DelegateMenuItem("整组连接", MenuNames.SessionConnect, groupBase.Connect); toolStripMenuItem.Enabled = !allConnected; menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("连接组为...", MenuNames.SessionConnectAs, groupBase.DoConnectAs); toolStripMenuItem.Enabled = !allConnected; menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("重连整组", MenuNames.SessionReconnect, groupBase.Reconnect); toolStripMenuItem.Enabled = anyConnected; menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("断开整组", MenuNames.SessionDisconnect, groupBase.Disconnect); toolStripMenuItem.Enabled = anyConnected; menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("登出整组", MenuNames.SessionLogOff, groupBase.LogOff); toolStripMenuItem.Enabled = (!Policies.DisableLogOff && anyConnected); menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("添加服务器", MenuNames.EditAddServer, delegate { AddNodeDialogHelper.AddServersDialog(node); }); toolStripMenuItem.Enabled = groupBase.CanAddServers(); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("添加群组", MenuNames.EditAddGroup, delegate { AddNodeDialogHelper.AddGroupDialog(node); }); toolStripMenuItem.Enabled = groupBase.CanAddGroups(); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("添加智能群组", MenuNames.EditAddSmartGroup, delegate { AddNodeDialogHelper.AddSmartGroupDialog(node); }); toolStripMenuItem.Enabled = groupBase.CanAddGroups(); menu.Items.Add(toolStripMenuItem); menu.Items.Add("-"); FileGroup file = node as FileGroup; if (file != null) { toolStripMenuItem = new DelegateMenuItem("保存 " + file.GetFilename(), MenuNames.FileSave, delegate { Program.TheForm.DoFileSave(file); }); toolStripMenuItem.Enabled = file.AllowEdit(popUI: false); menu.Items.Add(toolStripMenuItem); menu.Items.Add(new DelegateMenuItem("关闭 " + file.GetFilename(), MenuNames.FileClose, delegate { Program.TheForm.DoFileClose(file); })); } else { toolStripMenuItem = new DelegateMenuItem("删除服务器", MenuNames.EditRemoveServers, delegate { DoRemoveChildren(node); }); toolStripMenuItem.Enabled = groupBase.CanRemoveChildren(); menu.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("删除群组", MenuNames.EditRemove, delegate { ConfirmRemove(node, askUser: true); }); toolStripMenuItem.Enabled = node.CanRemove(popUI: false); menu.Items.Add(toolStripMenuItem); } menu.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("属性", MenuNames.EditProperties, node.DoPropertiesDialog); toolStripMenuItem.Enabled = node.HasProperties; menu.Items.Add(toolStripMenuItem); } else { ServerBase server = node as ServerBase; MenuHelper.AddSessionMenuItems(menu, server); menu.Items.Add("-"); MenuHelper.AddDockingMenuItems(menu, server); menu.Items.Add("-"); MenuHelper.AddMaintenanceMenuItems(menu, server); } }
private void ContextMenuPopup(object menuSender, EventArgs args) { ContextMenuStrip contextMenuStrip = menuSender as ContextMenuStrip; List <ServerBase> selectedServers = base.SelectedServers.ToList(); if (selectedServers.Count == 0) { if (base.ListView.FocusedItem == null) { return; } selectedServers.Add(base.ListView.FocusedItem.Tag as ServerBase); } contextMenuStrip.Items.Clear(); NodeHelper.AnyOrAllConnected(selectedServers, out bool anyConnected, out bool allConnected); ToolStripMenuItem toolStripMenuItem = new DelegateMenuItem("&C连接", MenuNames.SessionConnect, delegate { NodeHelper.ThrottledConnect(selectedServers); OK(); }); toolStripMenuItem.Enabled = !allConnected; contextMenuStrip.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("&R重新连接", MenuNames.SessionReconnect, delegate { selectedServers.ForEach(delegate(ServerBase server) { server.Reconnect(); }); OK(); }); toolStripMenuItem.Enabled = anyConnected; contextMenuStrip.Items.Add(toolStripMenuItem); toolStripMenuItem = new DelegateMenuItem("&D断开连接", MenuNames.SessionDisconnect, delegate { NodeHelper.ThrottledDisconnect(selectedServers); OK(); }); toolStripMenuItem.Enabled = anyConnected; contextMenuStrip.Items.Add(toolStripMenuItem); contextMenuStrip.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("注销", MenuNames.SessionLogOff, delegate { selectedServers.ForEach(delegate(ServerBase server) { server.LogOff(); }); OK(); }); toolStripMenuItem.Enabled = (!Policies.DisableLogOff && anyConnected); contextMenuStrip.Items.Add(toolStripMenuItem); contextMenuStrip.Items.Add("-"); toolStripMenuItem = new DelegateMenuItem("删除", MenuNames.EditRemove, delegate { if (!anyConnected || FormTools.YesNoDialog("有活动的会话。 你确定吗?") == DialogResult.Yes) { selectedServers.ForEach(delegate(ServerBase server) { ServerTree.Instance.ConfirmRemove(server, askUser: false); }); Cancel(); } }); contextMenuStrip.Items.Add(toolStripMenuItem); contextMenuStrip.Items.Add("-"); contextMenuStrip.Items.Add(new DelegateMenuItem("添加到收藏夹", MenuNames.EditAddToFavorites, delegate { selectedServers.ForEach(delegate(ServerBase server) { FavoritesGroup.Instance.AddReference(server); }); OK(); })); }
protected void CreateMainMenu() { _sessionConnectServerMenuItem = new DelegateMenuItem("连接", MenuNames.SessionConnect, "Enter", delegate { _server.Connect(); }); _sessionConnectServerAsMenuItem = new DelegateMenuItem("连接为...", MenuNames.SessionConnectAs, "Shift+Enter", delegate { _server.DoConnectAs(); }); _sessionReconnectServerMenuItem = new DelegateMenuItem("重连接", MenuNames.SessionReconnect, delegate { _server.Reconnect(); }); _sessionDisconnectServerMenuItem = new DelegateMenuItem("断开连接", MenuNames.SessionDisconnect, delegate { _server.Disconnect(); }); _sessionFullScreenMenuItem = new DelegateMenuItem("全屏", MenuNames.SessionFullScreen, delegate { _server.Client.MsRdpClient.FullScreen = true; }); DelegateMenuItem value = new DelegateMenuItem("停靠", MenuNames.SessionDock, delegate { Close(); }); _sessionScreenCaptureMenuItem = new DelegateMenuItem("屏幕截图", MenuNames.SessionScreenCapture, delegate { _server.ScreenCapture(); }); DelegateMenuItem value2 = new DelegateMenuItem("属性", MenuNames.EditProperties, "Alt+Enter", delegate { _server.DoPropertiesDialog(); }); ToolStripMenuItem toolStripMenuItem = _menuStrip.Add("会话", MenuNames.Session); toolStripMenuItem.DropDownItems.Add(_sessionConnectServerMenuItem); toolStripMenuItem.DropDownItems.Add(_sessionConnectServerAsMenuItem); toolStripMenuItem.DropDownItems.Add(_sessionReconnectServerMenuItem); toolStripMenuItem.DropDownItems.Add("-"); _sessionSendKeysMenuItem = toolStripMenuItem.DropDownItems.Add("发送按键", MenuNames.SessionSendKeys); MenuHelper.AddSendKeysMenuItems(_sessionSendKeysMenuItem, () => _server); if (RdpClient.SupportsRemoteSessionActions) { _sessionRemoteActionsMenuItem = toolStripMenuItem.DropDownItems.Add("远程动作", MenuNames.SessionRemoteActions); MenuHelper.AddRemoteActionsMenuItems(_sessionRemoteActionsMenuItem, () => _server); } toolStripMenuItem.DropDownItems.Add("-"); toolStripMenuItem.DropDownItems.Add(_sessionDisconnectServerMenuItem); toolStripMenuItem.DropDownItems.Add("-"); toolStripMenuItem.DropDownItems.Add(_sessionFullScreenMenuItem); toolStripMenuItem.DropDownItems.Add(value); toolStripMenuItem.DropDownItems.Add("-"); toolStripMenuItem.DropDownItems.Add(_sessionScreenCaptureMenuItem); toolStripMenuItem.DropDownItems.Add("-"); toolStripMenuItem.DropDownItems.Add(value2); ToolStripMenuItem toolStripMenuItem2 = _menuStrip.Add("视图", MenuNames.View); ToolStripMenuItem toolStripMenuItem3 = toolStripMenuItem2.DropDownItems.Add("桌面大小", MenuNames.ViewClientSize); Size[] stockSizes = SizeHelper.StockSizes; foreach (Size size in stockSizes) { ClientSizeCheckedMenuItem value3 = new ClientSizeCheckedMenuItem(this, size); toolStripMenuItem3.DropDownItems.Add(value3); } toolStripMenuItem3.DropDownItems.Add(new CustomClientSizeCheckedMenuItem(this, "自定义")); toolStripMenuItem3.DropDownItems.Add(new ToolStripMenuItem("适应远程桌面大小", null, delegate { SetClientSize(_server.IsConnected ? _server.Client.DesktopSize : _server.RemoteDesktopSettings.DesktopSize.Value); })); }