private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) { MouseButtons button; switch (wParam.ToInt32()) { case WM_LBUTTONDOWN: button = MouseButtons.Left; break; case WM_RBUTTONDOWN: button = MouseButtons.Right; break; case WM_MBUTTONDOWN: button = MouseButtons.Middle; break; default: button = MouseButtons.None; break; } if (button != MouseButtons.None) { CallBacks?.Invoke(button); } } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); CallBacks?.Invoke((Keys)vkCode); } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }