private IntPtr HookProc(int nCode, IntPtr wParam, ref LowLevelKeyStruct lParam) { if (HookProcInner(nCode, (WindowMessages)wParam, ref lParam)) { return((IntPtr)1); } return(CallNextHookEx(hookId, nCode, wParam, ref lParam)); }
private bool HookProcInner(int nCode, WindowMessages wParam, ref LowLevelKeyStruct lParam) { if (nCode < 0) { return(false); } if (lParam.Flags.HasFlag(LowLevelKeyFlags.Injected)) { return(false); } bool alt = lParam.Flags.HasFlag(LowLevelKeyFlags.AltDown); Keys key = alt ? lParam.VkCode | Keys.Alt : lParam.VkCode; KeyHookEventArgs e = new KeyHookEventArgs(key); KeyEvent?.Invoke(e); return(e.Handled); }
private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, ref LowLevelKeyStruct lParam);