Esempio n. 1
0
        protected IntPtr CoreHookProc(int code, IntPtr wParam, IntPtr lParam)
        {
            if (code < 0)
            {
                return(CallNextHookEx(_hookID, (HC)code, wParam, lParam));
            }

            if (code == (int)HC.ACTION)
            {
                // Let clients determine what to do
                var           handler = HookEventHandler;
                HookEventArgs e       = new HookEventArgs();
                e.HookCode = code;
                e.wParam   = wParam;
                e.lParam   = lParam;

                if (handler != null)
                {
                    bool handled = handler.Invoke(e);
                    if (handled)
                    {
                        return((IntPtr)1);                        // Handled.
                    }
                }
            }

            // Yield to the next hook in the chain
            return(CallNextHookEx(_hookID, (HC)code, wParam, lParam));
        }
        protected virtual bool OnKeyboardEvent(HookEventArgs args)
        {
            if (args == null)
            {
                return(false);
            }

            WM  wParam   = (WM)args.wParam.ToInt32();
            var hookInfo = Marshal.PtrToStructure <KBDLLHOOKSTRUCT>(args.lParam);
            var key      = (Keys)hookInfo.vkCode;

            bool alt     = IsKeyPressed(Keys.Menu);
            bool control = IsKeyPressed(Keys.ControlKey);

            return(_keyboadHandler.HandleKey(_handler, new KeyboardParam(wParam == WM.KEYUP, alt, control, key)));
        }
Esempio n. 3
0
        protected virtual bool OnKeyboardEvent(HookEventArgs args)
        {
            if (args == null)
            {
                return(false);
            }

            WM  wParam   = (WM)args.wParam.ToInt32();
            var hookInfo = Marshal.PtrToStructure <KBDLLHOOKSTRUCT>(args.lParam);
            var key      = (Keys)hookInfo.vkCode;


            bool alt     = IsKeyPressed(Keys.Menu);
            bool control = IsKeyPressed(Keys.ControlKey);

            if (!AllowKeyboardInput(alt, control, (int)key))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 4
0
        protected virtual bool OnMouseEvent(HookEventArgs args)
        {
            if (args == null)
            {
                return(false);
            }

            WM wParam = (WM)args.wParam.ToInt32();

            switch (wParam)
            {
            case WM.MOUSEMOVE:
                if (_dragWindowInfo != null && _dragWindowInfo.DragInitiated)
                {
                    POINT cursorPos = new POINT();
                    if (GetCurrentCursorLocation(args.lParam, ref cursorPos))
                    {
                        var ptDelta     = new POINT(cursorPos.x - _dragWindowInfo.DragPoint.x, cursorPos.y - _dragWindowInfo.DragPoint.y);
                        var newLocation = new POINT(_dragWindowInfo.DragWindowLocation.x + ptDelta.x, _dragWindowInfo.DragWindowLocation.y + ptDelta.y);
                        OnMouseMove(newLocation.x, newLocation.y);

                        return(false);
                    }
                }
                break;

            // button up messages
            case WM.LBUTTONUP:
                if (_dragWindowInfo != null && _dragWindowInfo.DragInitiated)
                {
                    OnLeftButtonUp();
                }
                break;
            }

            return(false);
        }