Ejemplo n.º 1
0
        /// <summary>
        /// Low- Level Keyboard hook Callback
        /// </summary>
        IntPtr LLKeyboardCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && wParam == (IntPtr)LowLevel.Constantss.WM_KEYDOWN)
            {
                int vkCode = Marshal.ReadInt32(lParam);

                //process keypress
                Keys vKey  = (Keys)vkCode;
                char vChar = GetCharFromKey(vKey);

                //invoke event
                bool?cancelPress = KeyPressed?.Invoke(vKey, vChar);
                if (cancelPress.HasValue && cancelPress.Value)
                {
                    //cancel keypress
                    return((IntPtr)1);
                }
            }

            return(LowLevel.CallNextHookEx(hookPtr, nCode, wParam, lParam));
        }