示例#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 ? "至少选择一个要重置的项目" : "所选的项目重置重置成功");
        }
        public override void Connect(DbItemRemoteLink linkSettings, DbItemSetting lastSetting)
        {
            DbItemSettingTelnet lastSettingTelnet = lastSetting as DbItemSettingTelnet;

            if (lastSettingTelnet == null)
            {
                return;
            }

            string[] values = linkSettings.Server.Split(':');
            if (values.Length > 2)
            {
                throw new Exception($"服务器地址不正确。");                   //地址不正确
            }
            string server = values[0];
            string port   = values.Length == 2 ? $"-P {values[1]}" : "-P 23";

            IntPtr parentHwnd = FormsControl.Handle;
            Window windows    = Window.GetWindow(this);
            int    width      = (int)windows.Width - 4;
            int    height     = (int)windows.Height - 34;

            Thread thread = new Thread(() =>
            {
                Putty.Settings settings = new Putty.Settings
                {
                    fontname          = lastSettingTelnet.FontName,
                    fontsize          = lastSettingTelnet.FontSize,
                    curtype           = lastSettingTelnet.Cursor - 1,
                    linecodepage      = Encoding.GetEncoding(lastSettingTelnet.Character).BodyName,
                    backspaceisdelete = lastSettingTelnet.Fallbackkeys - 1,
                    mouseisxterm      = lastSettingTelnet.MouseAction - 1,
                    puttycolor        = new Putty.PuttyColor(lastSettingTelnet.GetPuttyColor()),
                    rxvthomeend       = lastSettingTelnet.HomeAndEnd - 1,
                    functionkeys      = lastSettingTelnet.FnAndKeypad - 1,
                    cjkambigwide      = lastSettingTelnet.CJKAmbigWide.Value,
                    capslockcyr       = lastSettingTelnet.CapsLockCyr.Value,
                    crimplieslf       = lastSettingTelnet.CRImpliesLF.Value,
                    lfimpliescr       = lastSettingTelnet.LFImpliesCR.Value,
                };
                string user = string.Empty;
                string pw   = string.Empty;
                if (!string.IsNullOrWhiteSpace(linkSettings.UserName))
                {
                    user = $"-l {linkSettings.UserName}";
                    pw   = string.IsNullOrEmpty(linkSettings.Password) ? "" : $"-pw {linkSettings.Password}";
                }

                if (!_putty.Create(parentHwnd, $"-telnet {port} {user} {pw} {server}", 0, 0, width, height, settings))
                {
                    string errorText = Marshal.PtrToStringAnsi(_putty.GetError());
                    Dispatcher.Invoke(() => { OnFatalError?.Invoke("错误", errorText); });
                }

                _putty.Dispose();
                _putty = null;
                GC.Collect();
                GC.SuppressFinalize(this);
            });

            thread.Start();
        }