private IntPtr HookCallback(int code, IntPtr wParam, IntPtr lParam) { if (code < 0) { return(InterceptKeys.CallNextHookEx(_hookId, code, wParam, lParam)); } const int WM_KEYDOWN = 0x0100; if (wParam != (IntPtr)WM_KEYDOWN) { return(InterceptKeys.CallNextHookEx(_hookId, code, wParam, lParam)); } var vkCode = Marshal.ReadInt32(lParam); var keyDownEvent = KeyDown; if (keyDownEvent != null) { keyDownEvent(null, new RawKeyEventArgs(vkCode, false)); } return(InterceptKeys.CallNextHookEx(_hookId, code, wParam, lParam)); }
/// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> public void Dispose() { InterceptKeys.UnhookWindowsHookEx(_hookId); }
/// <summary> /// Initializes static members of the <see cref="GlobalKeyboardHookHelper"/> class. /// </summary> public GlobalKeyboardHookHelper() { _hookId = InterceptKeys.SetHook(HookCallback); }