Exemplo n.º 1
0
 protected virtual void Dispose(bool disposing)
 {
     if (_disposed)
     {
         return;
     }
     if (disposing)
     {
     }
     UnregisterAll();
     EasyWinAPI.UnhookWindowsHookEx(this._hookId);
     _disposed = true;
 }
Exemplo n.º 2
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));
        }
Exemplo n.º 3
0
 public EasyHotKey()
 {
     _hookproc = new LowLevelKeyboardProc(HookCallBack);
     _hookId   = EasyWinAPI.SetKeyboardHookEx(_hookproc);
 }