public IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam) { bool fEatKeyStroke = false; var wparamTyped = wParam.ToInt32(); if (wparamTyped == 0x101 && Pressing == true) { Pressing = false; } if (wparamTyped == 0x100 || wparamTyped == 0x104) { object o = Marshal.PtrToStructure(lParam, typeof(LowLevelKeyInputArgs)); LowLevelKeyInputArgs p = (LowLevelKeyInputArgs)o; var eventArguments = new GlobalKeyHookEventArgs(p, (VKeyState)wparamTyped); EventHandler <GlobalKeyHookEventArgs> handler = KeyboardDown; handler?.Invoke(this, eventArguments); fEatKeyStroke = eventArguments.Handled; } return(fEatKeyStroke ? (IntPtr)1 : CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam)); }
public GlobalKeyHookEventArgs(LowLevelKeyInputArgs keyboardData, VKeyState keyboardState) { KeyboardData = keyboardData; KeyboardState = keyboardState; }