Exemplo n.º 1
0
        internal override IntPtr Callback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            var data = (KBDLLHOOKSTRUCT)PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));

            var ea = new LowLevelKeyboardProcEventArgs(data);

            LowLevelKeyboardProc?.Invoke((WPARAM)wParam, ea);

            switch ((WPARAM)wParam)
            {
            case WPARAM.WM_KEYDOWN:
                KeyDown?.Invoke(ea);
                break;

            case WPARAM.WM_KEYUP:
                KeyUp?.Invoke(ea);
                break;

            case WPARAM.WM_SYSKEYDOWN:
                SysKeyDown?.Invoke(ea);
                break;

            case WPARAM.WM_SYSKEYUP:
                SysKeyUp?.Invoke(ea);
                break;
            }

            return(base.Callback(nCode, wParam, lParam));
        }