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