コード例 #1
0
        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);
        }
コード例 #2
0
        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));;
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref KeyboardHookData lParam);