Пример #1
0
        /// <summary>
        /// 重置远程连接默认设置
        /// </summary>
        private void PART_Reset_Change_Click(object sender, RoutedEventArgs e)
        {
            int           i = 0;
            DbItemSetting itemSetting;

            if (PART_Reset_Rdp.IsChecked.Value)
            {
                i++;
                itemSetting = DbItemSettingRdp.FromDefault();
                itemSetting.SetDefaultSetting();
            }
            if (PART_Reset_Ssh.IsChecked.Value)
            {
                i++;
                itemSetting = DbItemSettingSsh.FromDefault();
                itemSetting.SetDefaultSetting();
            }
            if (PART_Reset_Telnet.IsChecked.Value)
            {
                i++;
                itemSetting = DbItemSettingTelnet.FromDefault();
                itemSetting.SetDefaultSetting();
            }

            MainWindow.ShowNoticeDialog("提示", i == 0 ? "至少选择一个要重置的项目" : "所选的项目重置重置成功");
        }
Пример #2
0
        public override void Connect(DbItemRemoteLink linkSettings, DbItemSetting lastSetting)
        {
            DbItemSettingRdp lastSettingRdp = lastSetting as DbItemSettingRdp;

            if (lastSettingRdp == null)
            {
                return;
            }

            //分离服务器地址和端口
            string[] addr = linkSettings.Server.Split(':');
            int      port = 3389;

            if (addr.Length > 1)
            {
                int.TryParse(addr[1], out port);
            }
            if (port <= 0)
            {
                port = 3389;
            }

            //初始化远程连接属性
            if (MsRdpClient7 != null) //win7及以下版本
            {
                MsRdpClient7.Server   = addr[0];
                MsRdpClient7.UserName = linkSettings.UserName;
                MsRdpClient7.AdvancedSettings2.ClearTextPassword = linkSettings.Password;
                MsRdpClient7.AdvancedSettings2.RDPPort           = port;
                MsRdpClientOcx = (IMsRdpClientNonScriptable5)MsRdpClient7.GetOcx();
                MsRdpClientOcx.PromptForCredentials         = false; //凭据提示对话框
                MsRdpClientOcx.AllowPromptingForCredentials = true;  //显示密码输入框
                MsRdpClientOcx.DisableConnectionBar         = true;  //禁用连接栏

                //将窗口句柄设置或检索为控件显示的任何对话框的父窗口
                var parentHwnd = CommonServices.HWNDtoRemotableHandle(new WindowInteropHelper(Window.GetWindow(this)).Handle);
                MsRdpClientOcx.set_UIParentWindowHandle(ref parentHwnd);

                MsRdpClient7.AdvancedSettings.BitmapPeristence           = 1;     //启用位图缓存
                MsRdpClient7.AdvancedSettings.Compress                   = 1;     //启用压缩
                MsRdpClient7.AdvancedSettings.ContainerHandledFullScreen = 1;     //启用容器处理的全屏模式。
                MsRdpClient7.AdvancedSettings2.BitmapPersistence         = 1;     //持久位图缓存
                MsRdpClient7.AdvancedSettings2.CachePersistenceActive    = 1;     //持久位图缓存
                MsRdpClient7.AdvancedSettings2.GrabFocusOnConnect        = false; //连接的时候获取焦点
                MsRdpClient7.AdvancedSettings7.EnableCredSspSupport      = true;  //指定是否为此连接启用凭据安全服务提供程序

                //分辨率
                if (lastSettingRdp.SizeIndex == DbItemSetting.DESKSIZE_AUTO)//自适应分辨率
                {
                    Window windows = Window.GetWindow(this);
                    MsRdpClient7.DesktopWidth  = (int)windows.Width - 4;
                    MsRdpClient7.DesktopHeight = (int)windows.Height - 34;
                }
                else
                {
                    var size = lastSettingRdp.GetDeskTopSize();
                    MsRdpClient7.DesktopWidth  = (int)size.Width;
                    MsRdpClient7.DesktopHeight = (int)size.Height;
                }

                //性能选项
                if (lastSettingRdp.Performance != DbItemSettingRdp.CONNECTION_TYPE_AUTO)
                {
                    MsRdpClient7.AdvancedSettings8.NetworkConnectionType = (uint)lastSettingRdp.Performance;
                }
                //颜色深度
                switch (lastSettingRdp.ColorDepthMode)
                {
                case DbItemSettingRdp.COLOR_15BPP: MsRdpClient7.ColorDepth = 15; break;

                case DbItemSettingRdp.COLOR_16BPP: MsRdpClient7.ColorDepth = 16; break;

                case DbItemSettingRdp.COLOR_24BPP: MsRdpClient7.ColorDepth = 24; break;

                case DbItemSettingRdp.COLOR_32BPP: MsRdpClient7.ColorDepth = 32; break;

                default: MsRdpClient7.ColorDepth = 32; break;
                }
                //音频
                MsRdpClient7.AdvancedSettings6.AudioRedirectionMode = (uint)lastSettingRdp.AudioRedirectionMode - 1;
                //组合键
                MsRdpClient7.SecuredSettings2.KeyboardHookMode = lastSettingRdp.KeyboardHookMode - 1;
                //本地资源
                MsRdpClient7.AdvancedSettings2.RedirectPrinters   = lastSettingRdp.RedirectionPrintf.Value ? true : false;    //打印机
                MsRdpClient7.AdvancedSettings6.RedirectClipboard  = lastSettingRdp.RedirectionClipboard.Value ? true : false; //剪贴板重定向
                MsRdpClient7.AdvancedSettings3.RedirectSmartCards = lastSettingRdp.RedirectionsMartcard.Value ? true : false; //智能卡重定向
                MsRdpClient7.AdvancedSettings3.RedirectPorts      = lastSettingRdp.RedirectionsPort.Value ? true : false;     //端口重定向
                MsRdpClient7.AdvancedSettings3.RedirectDrives     = lastSettingRdp.RedirectionsDriver.Value ? true : false;   //驱动器重定向


                MsRdpClient7.AdvancedSettings4.ConnectionBarShowMinimizeButton = false;//显示全部工具栏上的最小化按钮
                MsRdpClient7.AdvancedSettings7.ConnectToAdministerServer       = false;

                MsRdpClient7.Connect();
                User32.EnumChildWindows(MsRdpClient7.Handle, EnumWindowsProc, IntPtr.Zero);
            }
            else //win8 及以上版本
            {
                MsRdpClient9.Server   = addr[0];
                MsRdpClient9.UserName = linkSettings.UserName;
                MsRdpClient9.AdvancedSettings2.ClearTextPassword = linkSettings.Password;
                MsRdpClient9.AdvancedSettings2.RDPPort           = port;
                MsRdpClientOcx = (IMsRdpClientNonScriptable5)MsRdpClient9.GetOcx();
                MsRdpClientOcx.PromptForCredentials         = false; //凭据提示对话框
                MsRdpClientOcx.AllowPromptingForCredentials = true;  //显示密码输入框
                MsRdpClientOcx.DisableConnectionBar         = true;  //禁用连接栏

                //将窗口句柄设置或检索为控件显示的任何对话框的父窗口
                var parentHwnd = CommonServices.HWNDtoRemotableHandle(new WindowInteropHelper(Window.GetWindow(this)).Handle);
                MsRdpClientOcx.set_UIParentWindowHandle(ref parentHwnd);

                MsRdpClient9.AdvancedSettings.BitmapPeristence           = 1;     //启用位图缓存
                MsRdpClient9.AdvancedSettings.Compress                   = 1;     //启用压缩
                MsRdpClient9.AdvancedSettings.ContainerHandledFullScreen = 1;     //启用容器处理的全屏模式。
                MsRdpClient9.AdvancedSettings2.BitmapPersistence         = 1;     //持久位图缓存
                MsRdpClient9.AdvancedSettings2.CachePersistenceActive    = 1;     //持久位图缓存
                MsRdpClient9.AdvancedSettings2.GrabFocusOnConnect        = false; //连接的时候获取焦点
                MsRdpClient9.AdvancedSettings7.EnableCredSspSupport      = true;  //指定是否为此连接启用凭据安全服务提供程序

                //分辨率
                if (lastSettingRdp.SizeIndex == DbItemSetting.DESKSIZE_AUTO)//自适应分辨率
                {
                    Window windows = Window.GetWindow(this);
                    MsRdpClient9.DesktopWidth  = (int)windows.Width - 4;
                    MsRdpClient9.DesktopHeight = (int)windows.Height - 34;
                }
                else
                {
                    var size = lastSettingRdp.GetDeskTopSize();
                    MsRdpClient9.DesktopWidth  = (int)size.Width;
                    MsRdpClient9.DesktopHeight = (int)size.Height;
                }
                //性能选项
                if (lastSettingRdp.Performance == DbItemSettingRdp.CONNECTION_TYPE_AUTO)
                {
                    MsRdpClient9.AdvancedSettings9.BandwidthDetection = true;                                                                     //自动检查带宽
                }
                else
                {
                    MsRdpClient9.AdvancedSettings8.NetworkConnectionType = (uint)lastSettingRdp.Performance;
                }
                //颜色深度
                switch (lastSettingRdp.ColorDepthMode)
                {
                case DbItemSettingRdp.COLOR_15BPP: MsRdpClient9.ColorDepth = 15; break;

                case DbItemSettingRdp.COLOR_16BPP: MsRdpClient9.ColorDepth = 16; break;

                case DbItemSettingRdp.COLOR_24BPP: MsRdpClient9.ColorDepth = 24; break;

                case DbItemSettingRdp.COLOR_32BPP: MsRdpClient9.ColorDepth = 32; break;

                default: MsRdpClient9.ColorDepth = 32; break;
                }
                //音频
                MsRdpClient9.AdvancedSettings6.AudioRedirectionMode = (uint)lastSettingRdp.AudioRedirectionMode - 1;
                //录音设备
                MsRdpClient9.AdvancedSettings8.AudioCaptureRedirectionMode = lastSettingRdp.AudioCaptureRedirectionMode == DbItemSettingRdp.AAUDIOCAPTURE_TRUE;
                //组合键
                MsRdpClient9.SecuredSettings2.KeyboardHookMode = lastSettingRdp.KeyboardHookMode - 1;
                //重定向
                MsRdpClient9.AdvancedSettings2.RedirectPrinters   = lastSettingRdp.RedirectionPrintf.Value ? true : false;    //打印机
                MsRdpClient9.AdvancedSettings6.RedirectClipboard  = lastSettingRdp.RedirectionClipboard.Value ? true : false; //剪贴板重定向
                MsRdpClient9.AdvancedSettings3.RedirectSmartCards = lastSettingRdp.RedirectionsMartcard.Value ? true : false; //智能卡重定向
                MsRdpClient9.AdvancedSettings3.RedirectPorts      = lastSettingRdp.RedirectionsPort.Value ? true : false;     //端口重定向
                MsRdpClient9.AdvancedSettings3.RedirectDrives     = lastSettingRdp.RedirectionsDriver.Value ? true : false;   //驱动器重定向
                MsRdpClient9.AdvancedSettings4.ConnectionBarShowMinimizeButton = false;                                       //显示全部工具栏上的最小化按钮

                MsRdpClient9.Connect();
                User32.EnumChildWindows(MsRdpClient9.Handle, EnumWindowsProc, IntPtr.Zero);
            }
        }