Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
            }));
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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();
            }));
        }
Exemple #6
0
        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);
            }));
        }