Ejemplo n.º 1
0
            private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
            {
                if (nCode < 0 || Enable == false)
                {
                    return(API.CallNextHookEx(_hookID, nCode, wParam, lParam));
                }

                API.KBDLLHOOKSTRUCT hookStruct = (API.KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(API.KBDLLHOOKSTRUCT));

                Keys      key      = (Keys)hookStruct.vkCode;
                KeyStates keyState = KeyStates.None;

                switch ((API.KeyboardMessages)wParam)
                {
                case API.KeyboardMessages.WM_KEYDOWN:
                {
                    keyState = KeyStates.Down;
                }
                break;

                case API.KeyboardMessages.WM_KEYUP:
                {
                    keyState = KeyStates.Up;
                }
                break;
                }

                if (KeyboardAction(new KeyboardActionArgs(key, keyState)))
                {
                    return((IntPtr)1);
                }

                return(API.CallNextHookEx(_hookID, nCode, wParam, lParam));
            }
Ejemplo n.º 2
0
        private bool KeyboardProcedure(int message, API.KBDLLHOOKSTRUCT param)
        {
            var isInjected = ((param.flags & (1 << 1)) | (param.flags & (1 << 4))) != 0;
            var isALTDown  = (param.flags & (1 << 5)) != 0;
            var args       = new KeyEventArgs(param.vkCode, isInjected, isALTDown);

            if (message == API.WM_KEYDOWN || message == API.WM_SYSKEYDOWN)
            {
                KeyDownEvent?.Invoke(this, args);
            }
            else if (message == API.WM_KEYUP || message == API.WM_SYSKEYUP)
            {
                KeyUpEvent?.Invoke(this, args);
            }
            return(args.IsPrevent);
        }