private void Button_Register(object sender, RoutedEventArgs e)
        {
            foreach (KeyValuePair <int, HotKeyHanld> kv in HotKeyQueue)
            {
                Log(String.Format("UnregisterHotKey {0}", kv.Key));
                kv.Value.AUnregisterHotKey();
            }
            HotKeyQueue.Clear();// 清空 HotKeyQueue 字典

            int id = 10000;

            foreach (StackPanel stackPanel in Sps)
            {
                int fsk;
                fsk = GetComboValue(stackPanel, out string vk, out string pass);
                if (fsk > 0)
                {
                    int vki = VirtualKeys.VirtualKeyDict[vk].AsciiCode;
                    HotKeyQueue.Add(id, new HotKeyHanld(hd, id, fsk, vki, Getaction(pass)));
                    id += 1;

                    defSettings[stackPanel.Name] = fsk.ToString() + vk + MyBase64.Base64Encode(pass); //保存配置
                    defSettings.Save();
                }
            }

            List <int> keys = new List <int>(HotKeyQueue.Keys);

            for (int i = 0; i < keys.Count; i++)
            {
                Log(String.Format("RegisterHotKey {0}", keys[i]));
                HotKeyQueue[keys[i]].ARegisterHotKey();
            }
        }
        private void Window_Loaded(object sender, EventArgs e)
        {
            Sps.Add(hkA);
            Sps.Add(hkB);
            Sps.Add(hkC);
            Sps.Add(hkD);

            List <FsModKey> fsmodkey = new List <FsModKey> {
            };

            fsmodkey.Add(new FsModKey {
                Name = "Alt", Value = 0x0001
            });
            fsmodkey.Add(new FsModKey {
                Name = "CtrL", Value = 0x0002
            });
            fsmodkey.Add(new FsModKey {
                Name = "Shift", Value = 0x0004
            });
            fsmodkey.Add(new FsModKey {
                Name = "Win", Value = 0x0008
            });

            foreach (StackPanel stackPanel in Sps) //绑定下拉框
            {
                ComboBox combobox = VisualTreeHelper.GetChild(stackPanel, 0) as ComboBox;
                combobox.ItemsSource   = fsmodkey;
                combobox.SelectedIndex = 0;
            }

            foreach (StackPanel stackPanel in Sps) //如果有 则加载配置
            {
                string value = defSettings[stackPanel.Name].ToString();

                if (value.Length < 3)
                {
                    continue;
                }

                ComboBox    combobox    = VisualTreeHelper.GetChild(stackPanel, 0) as ComboBox;
                TextBox     textbox     = VisualTreeHelper.GetChild(stackPanel, 2) as TextBox;
                PasswordBox passwordbox = VisualTreeHelper.GetChild(stackPanel, 3) as PasswordBox;

                switch (value.Substring(0, 1))
                {
                case "2":
                    combobox.SelectedIndex = 1;
                    break;

                case "1":
                    combobox.SelectedIndex = 0;
                    break;

                case "4":
                    combobox.SelectedIndex = 2;
                    break;

                case "8":
                    combobox.SelectedIndex = 3;
                    break;

                default:
                    combobox.SelectedIndex = 0;
                    break;
                }
                textbox.Text         = value.Substring(1, 1);
                passwordbox.Password = MyBase64.Base64Decode(value.Substring(2));
            }
        }