Esempio n. 1
0
        /// <summary>
        /// 注册热键
        /// </summary>
        /// <param name="handle"></param>
        /// <param name="id"></param>
        /// <param name="key"></param>
        /// <param name="modifiers"></param>
        /// <returns></returns>
        public static bool RegisterHotKey(IntPtr handle, int id, EasyModifierKeys modifiers, EasyKey key)
        {
            var virtualCode  = EasyKeyInterop.VirtualKeyFromKey(key);
            var modifiersKey = (uint)modifiers;

            return(RegisterHotKey(handle, id, modifiersKey, (uint)virtualCode));
        }
Esempio n. 2
0
        public void Register(uint key, uint modifierKeys)
        {
            var key1          = EasyKeyInterop.KeyFromVirtualKey((int)key);
            var modifierKeys1 = (EasyModifierKeys)modifierKeys;
            var hotKey        = new HotKey(key1, modifierKeys1);

            Register(hotKey);
        }
Esempio n. 3
0
        private IntPtr HookCallBack(int nCode, IntPtr wParam, IntPtr lParam)
        {
            int keyState   = (int)wParam;
            int vkCode     = Marshal.ReadInt32(lParam);
            var keyPressed = EasyKeyInterop.KeyFromVirtualKey(vkCode);

            if (nCode >= 0 && (wParam == (IntPtr)NativeMethods.WM_KEYDOWN || wParam == (IntPtr)NativeMethods.WM_SYSKEYDOWN))
            {
                if (_pressKeys.IndexOf(keyPressed) < 0)
                {
                    _pressKeys.Add(keyPressed);
                }
                EasyModifierKeys modifierKeys = default(EasyModifierKeys);
                EasyKey          easyKey      = default(EasyKey);
                foreach (var key in _pressKeys)
                {
                    if (TryGetModifierKey(key, out EasyModifierKeys keys))
                    {
                        modifierKeys = modifierKeys | keys;
                    }
                    else
                    {
                        easyKey = easyKey | key;
                    }
                }
                var hotKey = new HotKey(easyKey, modifierKeys);
                if (_registered.ContainsKey(hotKey))
                {
                    OnKeyPressed(hotKey);
                }
            }
            if (nCode >= 0 && (wParam == (IntPtr)NativeMethods.WM_KEYUP || wParam == (IntPtr)NativeMethods.WM_SYSKEYUP))
            {
                _pressKeys.Remove(keyPressed);
            }
            return(EasyWinAPI.CallNextHookEx(_hookId, nCode, wParam, lParam));
        }