Ejemplo n.º 1
0
        public IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            bool fEatKeyStroke = false;
            var  wParamTyped   = wParam.ToInt32();

            if (Enum.IsDefined(typeof(KeyboardState), wParamTyped))
            {
                LowLevelKeyboardInputEvent p = (LowLevelKeyboardInputEvent)Marshal.PtrToStructure(lParam, typeof(LowLevelKeyboardInputEvent));
                var eventArguments           = new GlobalKeyboardListenerEventArgs(p, (KeyboardState)wParamTyped);
                EventHandler <GlobalKeyboardListenerEventArgs> handler = KeyboardPressed;

                CheckKeys(eventArguments);
                handler?.Invoke(this, eventArguments);

                fEatKeyStroke = eventArguments.Handled;
            }

            return(fEatKeyStroke ? (IntPtr)1 : SystemDll.User32.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
        }
Ejemplo n.º 2
0
 private void CheckKeys(GlobalKeyboardListenerEventArgs e)
 {
     //  LCtrl
     if (e.KeyboardData.VirtualCode == 162)
     {
         if (e.KeyboardState == KeyboardState.KeyDown)
         {
             IsLCtrlPressing = true;
         }
         if (e.KeyboardState == KeyboardState.KeyUp)
         {
             IsLCtrlPressing = false;
         }
     }
     //  RCtrl
     if (e.KeyboardData.VirtualCode == 25)
     {
         if (e.KeyboardState == KeyboardState.KeyDown)
         {
             IsRCtrlPressing = true;
         }
         if (e.KeyboardState == KeyboardState.KeyUp)
         {
             IsRCtrlPressing = false;
         }
     }
     //  LAlt
     if (e.KeyboardData.VirtualCode == 164)
     {
         if (e.KeyboardState == KeyboardState.SysKeyDown || e.KeyboardState == KeyboardState.KeyDown)
         {
             IsLAltPressing = true;
         }
         if (e.KeyboardState == KeyboardState.SysKeyUp || e.KeyboardState == KeyboardState.KeyUp)
         {
             IsLAltPressing = false;
         }
     }
     //  RAlt
     if (e.KeyboardData.VirtualCode == 21)
     {
         if (e.KeyboardState == KeyboardState.SysKeyDown || e.KeyboardState == KeyboardState.KeyDown)
         {
             IsRAltPressing = true;
         }
         if (e.KeyboardState == KeyboardState.SysKeyUp || e.KeyboardState == KeyboardState.KeyUp)
         {
             IsRAltPressing = false;
         }
     }
     //  LShift
     if (e.KeyboardData.VirtualCode == 160)
     {
         if (e.KeyboardState == KeyboardState.KeyDown)
         {
             IsLShiftPressing = true;
         }
         if (e.KeyboardState == KeyboardState.KeyUp)
         {
             IsLShiftPressing = false;
         }
     }
     //  RShift
     if (e.KeyboardData.VirtualCode == 161)
     {
         if (e.KeyboardState == KeyboardState.KeyDown)
         {
             IsRShiftPressing = true;
         }
         if (e.KeyboardState == KeyboardState.KeyUp)
         {
             IsRShiftPressing = false;
         }
     }
 }