protected override HookResult HookProc(int code, int wParam, ref KeyboardHookData lParam) { Keys key = (Keys)lParam.vkCode; //Key Press Event KeyEventArgs keyEvent = new KeyEventArgs(key); if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) { KeyPress?.Invoke(keyEvent); if (ManageHook != null) { return(ManageHook.Invoke(key)); } } return(HookResult.Release); }
private int _hookProc(int code, int wParam, ref KeyboardHookData lParam) { HookResult result = HookResult.NoRelease; if (code >= 0) { result = HookProc(code, wParam, ref lParam); } switch (result) { case HookResult.NoRelease: return(1); case HookResult.Release: return(CallNextHookEx(hhook, code, wParam, ref lParam));; default: return(CallNextHookEx(hhook, code, wParam, ref lParam));; } }
protected virtual HookResult HookProc(int code, int wParam, ref KeyboardHookData lParam) { Keys k = (Keys)lParam.vkCode; //Check for shift(s), alt, and ctrl. //Shift if (k == Keys.LShiftKey) { bLeftShiftHeld = bShiftHeld = (wParam == WM_KEYDOWN); } else if (k == Keys.RShiftKey) { bRightShiftHeld = bShiftHeld = (wParam == WM_KEYDOWN); } //Control if ((lParam.vkCode & 0xA2) == 0xA2 || (lParam.vkCode & 0xA3) == 0xA3) { bCtrlHeld = (wParam == WM_KEYDOWN); return(HookResult.NoRelease); } //Alt if ((lParam.vkCode & 0xA4) == 0xA4 || (lParam.vkCode & 0xA5) == 0xA5) { bAltHeld = (wParam == WM_KEYDOWN); return(HookResult.NoRelease); } if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) { KeyDown?.Invoke(wParam, lParam); } else if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP) { KeyUp?.Invoke(wParam, lParam); } return(HookResult.Release); }
static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref KeyboardHookData lParam);