예제 #1
0
        public IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            bool fEatKeyStroke = false;

            var wparamTyped = wParam.ToInt32();

            if (wparamTyped == 0x101 && Pressing == true)
            {
                Pressing = false;
            }

            if (wparamTyped == 0x100 || wparamTyped == 0x104)
            {
                object o = Marshal.PtrToStructure(lParam, typeof(LowLevelKeyInputArgs));
                LowLevelKeyInputArgs p = (LowLevelKeyInputArgs)o;

                var eventArguments = new GlobalKeyHookEventArgs(p, (VKeyState)wparamTyped);

                EventHandler <GlobalKeyHookEventArgs> handler = KeyboardDown;
                handler?.Invoke(this, eventArguments);

                fEatKeyStroke = eventArguments.Handled;
            }

            return(fEatKeyStroke ? (IntPtr)1 : CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
        }
예제 #2
0
 public GlobalKeyHookEventArgs(LowLevelKeyInputArgs keyboardData, VKeyState keyboardState)
 {
     KeyboardData  = keyboardData;
     KeyboardState = keyboardState;
 }