コード例 #1
0
        public static Keys CovertToHotKeyModifiersForHelpers(HotKeyHelper.KeyModifiers keys)
        {
            Keys modifiers = Keys.None;

            if (keys.HasFlag(HotKeyHelper.KeyModifiers.Control))
            {
                modifiers = modifiers | Keys.Control;
            }

            if (keys.HasFlag(HotKeyHelper.KeyModifiers.Alt))
            {
                modifiers = modifiers | Keys.Alt;
            }

            if (keys.HasFlag(HotKeyHelper.KeyModifiers.Shift))
            {
                modifiers = modifiers | Keys.Shift;
            }

            if (keys.HasFlag(HotKeyHelper.KeyModifiers.Windows))
            {
                modifiers = modifiers | Keys.LWin;
            }

            return(modifiers);
        }
コード例 #2
0
        public static HotKeyHelper.KeyModifiers CovertToHotKeyModifiers(Keys keys)
        {
            HotKeyHelper.KeyModifiers modifiers = HotKeyHelper.KeyModifiers.None;

            if (keys.HasFlag(Keys.Control))
            {
                modifiers = modifiers | HotKeyHelper.KeyModifiers.Control;
            }

            if (keys.HasFlag(Keys.Alt))
            {
                modifiers = modifiers | HotKeyHelper.KeyModifiers.Alt;
            }

            if (keys.HasFlag(Keys.Shift))
            {
                modifiers = modifiers | HotKeyHelper.KeyModifiers.Shift;
            }

            if (keys.HasFlag(Keys.LWin))
            {
                modifiers = modifiers | HotKeyHelper.KeyModifiers.Windows;
            }

            return(modifiers);
        }
コード例 #3
0
ファイル: HotKeyUtil.cs プロジェクト: crcruicai/Library
 /// <summary>
 /// 构造一个热键。
 /// </summary>
 /// <param name="hand"></param>
 /// <param name="id"></param>
 /// <param name="modifiers"></param>
 /// <param name="key"></param>
 /// <param name="commond"></param>
 public HotKeyInfo(IntPtr hand, int id, HotKeyHelper.KeyModifiers modifiers, System.Windows.Forms.Keys key, string commond)
 {
     Commond   = commond;
     Key       = key;
     Modifiers = modifiers;
     ID        = id;
     Hand      = hand;
 }
コード例 #4
0
ファイル: MainWindow.xaml.cs プロジェクト: Lv000001/CO
        private void RegiseterHotKey(int hotKeyId, string hotkey)
        {
            string[] keys = hotkey.Split('+');
            List <HotKeyHelper.KeyModifiers> keyModifiers = new List <HotKeyHelper.KeyModifiers>();
            List <string> normalKey = new List <string>();

            for (int i = 0; i < keys.Length; i++)
            {
                if (keys[i].ToLower() == "ctrl")
                {
                    keyModifiers.Add(HotKeyHelper.KeyModifiers.Ctrl);
                }
                else if (keys[i].ToLower() == "alt")
                {
                    keyModifiers.Add(HotKeyHelper.KeyModifiers.Alt);
                }
                else if (keys[i].ToLower() == "shift")
                {
                    keyModifiers.Add(HotKeyHelper.KeyModifiers.Shift);
                }
                else
                {
                    normalKey.Add(keys[i]);
                }
            }
            if (normalKey.Count == 1) //
            {
                Keys norKey = Keys.D1;
                int  key    = 0;
                try
                {
                    if (int.TryParse(normalKey[0], out key))
                    {
                        norKey = (Keys)System.Enum.Parse(typeof(Keys), "D" + normalKey[0]);
                    }
                    else
                    {
                        norKey = (Keys)System.Enum.Parse(typeof(Keys), normalKey[0]);
                    }
                }
                catch (Exception)
                {
                    return;
                }

                HotKeyHelper.KeyModifiers sysKeyModifiers = HotKeyHelper.KeyModifiers.None;
                for (int i = 0; i < keyModifiers.Count; i++)
                {
                    sysKeyModifiers |= keyModifiers[i];
                }
                HotKeyHelper.UnregisterHotKey(handle, hotKeyId);
                HotKeyHelper.RegisterHotKey(handle, hotKeyId, sysKeyModifiers, norKey);
            }
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: kang0914/MapleMacro2
        protected override void WndProc(ref Message message)
        {
            switch (message.Msg)
            {
            case HotKeyHelper.WM_HOTKEY:
            {
                Keys key = (Keys)(((int)message.LParam >> 16) & 0xFFFF);
                HotKeyHelper.KeyModifiers modifier = (HotKeyHelper.KeyModifiers)((int)message.LParam & 0xFFFF);

                if (keysTextBox시작_키.Focused)
                {
                    keysTextBox시작_키.SelectedKeys = key | KeysHelper.CovertToHotKeyModifiersForHelpers(modifier);
                    break;
                }

                if (keysTextBox종료_키.Focused)
                {
                    keysTextBox종료_키.SelectedKeys = key | KeysHelper.CovertToHotKeyModifiersForHelpers(modifier);
                    break;
                }

                var startKeys      = KeysHelper.ClearModifiers(keysTextBox시작_키.SelectedKeys);
                var startModifiers = KeysHelper.CovertToHotKeyModifiers(keysTextBox시작_키.SelectedKeys);

                var endKeys      = KeysHelper.ClearModifiers(keysTextBox종료_키.SelectedKeys);
                var endModifiers = KeysHelper.CovertToHotKeyModifiers(keysTextBox종료_키.SelectedKeys);

                //if ((HotKeyHelper.KeyModifiers.Control | HotKeyHelper.KeyModifiers.Shift) == modifier && Keys.N == key)
                //if ((HotKeyHelper.KeyModifiers.None) == modifier && Keys.F4 == key)
                if (startModifiers == modifier &&
                    startKeys == key)
                {
                    // 시작 키, 종료 키가 같을 경우에는 토글
                    if (startKeys == endKeys &&
                        startModifiers == endModifiers)
                    {
                        ToggleMacro();
                    }
                    else
                    {
                        StartMacro();
                    }
                }
                else if (endModifiers == modifier &&
                         endKeys == key)
                {
                    EndMacro();
                }
            }
            break;
            }
            base.WndProc(ref message);
        }
コード例 #6
0
        /// <summary>
        /// 启用老板键
        /// </summary>
        private void EnableHotKey()
        {
            System.Windows.Forms.Keys k = (System.Windows.Forms.Keys)Enum.Parse(typeof(System.Windows.Forms.Keys), DataUtil.Config.sysConfig.hotKey.ToString().ToUpper());
            HotKeyHelper.KeyModifiers m = HotKeyHelper.KeyModifiers.None;
            if (DataUtil.Config.sysConfig.hotKeyCtrl)
            {
                m = HotKeyHelper.KeyModifiers.Ctrl;
            }
            if (DataUtil.Config.sysConfig.hotKeyAlt)
            {
                if (m == HotKeyHelper.KeyModifiers.None)
                {
                    m = HotKeyHelper.KeyModifiers.Alt;
                }
                else
                {
                    m = m | HotKeyHelper.KeyModifiers.Alt;
                }
            }
            if (DataUtil.Config.sysConfig.hotKeyShift)
            {
                if (m == HotKeyHelper.KeyModifiers.None)
                {
                    m = HotKeyHelper.KeyModifiers.Shift;
                }
                else
                {
                    m = m | HotKeyHelper.KeyModifiers.Shift;
                }
            }
            IntPtr handle = new WindowInteropHelper(this).Handle;

            if (HotKeyHelper.isRegistered)
            {
                HotKeyHelper.UnregisterHotKey(handle, HotKeyHelper.hotKeyId);
            }
            HotKeyHelper.isRegistered = HotKeyHelper.RegisterHotKey(handle, HotKeyHelper.hotKeyId, m, k);
            HotKeyHelper.InstallHotKeyHook(this);
        }