Пример #1
0
        public IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            bool fEatMouseStroke = false;

            var wparamTyped = wParam.ToInt32();

            if (Enum.IsDefined(typeof(MouseState), wparamTyped) && nCode >= 0)
            {
                object o = Marshal.PtrToStructure(lParam, typeof(LowLevelMouseInputEvent));
                LowLevelMouseInputEvent p = (LowLevelMouseInputEvent)o;

                var eventArguments = new GlobalMouseHookEventArgs(p, (MouseState)wparamTyped);

                EventHandler <GlobalMouseHookEventArgs> handler = MouseEvent;
                handler?.Invoke(this, eventArguments);

                fEatMouseStroke = eventArguments.Handled;
            }

            return(fEatMouseStroke ? (IntPtr)1 : CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
        }
Пример #2
0
        public IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            bool fEatMouse = false;

            var wparamTyped = wParam.ToInt32();

            if (Enum.IsDefined(typeof(Native.MouseState), wparamTyped))
            {
                object o = Marshal.PtrToStructure(lParam, typeof(LowLevelMouseInputEvent));
                LowLevelMouseInputEvent p = (LowLevelMouseInputEvent)o;

                var eventArguments = new MouseHookEventArgs(p, (Native.MouseState)wparamTyped);
                if (eventArguments.MouseState == Native.MouseState.MouseMove)
                {
                    this.OnMouseMove(eventArguments.MouseData.Point.X, eventArguments.MouseData.Point.Y);
                    fEatMouse = this.MouseMoveArgs.Handled;
                }

                if (eventArguments.MouseState == Native.MouseState.LeftButtonDown)
                {
                    this.OnMouseDown(MouseButton.Left);
                    fEatMouse = this.MouseDownArgs.Handled;
                }

                if (eventArguments.MouseState == Native.MouseState.LeftButtonUp)
                {
                    this.OnMouseUp(MouseButton.Left);
                    fEatMouse = this.MouseUpArgs.Handled;
                }

                if (eventArguments.MouseState == Native.MouseState.RightButtonDown)
                {
                    this.OnMouseDown(MouseButton.Right);
                    fEatMouse = this.MouseDownArgs.Handled;
                }

                if (eventArguments.MouseState == Native.MouseState.RightButtonUp)
                {
                    this.OnMouseUp(MouseButton.Right);
                    fEatMouse = this.MouseUpArgs.Handled;
                }

                if (eventArguments.MouseState == Native.MouseState.MBUTTONDOWN)
                {
                    this.OnMouseDown(MouseButton.Middle);
                    fEatMouse = this.MouseDownArgs.Handled;
                }

                if (eventArguments.MouseState == Native.MouseState.MBUTTONUP)
                {
                    this.OnMouseUp(MouseButton.Middle);
                    fEatMouse = this.MouseUpArgs.Handled;
                }

                if (eventArguments.MouseState == Native.MouseState.XBUTTONDOWN)
                {
                    var whichXButton = p.Mousedata >> 16;
                    if (whichXButton == 1)
                    {
                        this.OnMouseDown(MouseButton.Button1);
                        fEatMouse = this.MouseDownArgs.Handled;
                    }
                    if (whichXButton == 2)
                    {
                        this.OnMouseDown(MouseButton.Button2);
                        fEatMouse = this.MouseDownArgs.Handled;
                    }
                }
                if (eventArguments.MouseState == Native.MouseState.XBUTTONUP)
                {
                    var whichXButton = p.Mousedata >> 16;
                    if (whichXButton == 1)
                    {
                        this.OnMouseUp(MouseButton.Button1);
                        fEatMouse = this.MouseUpArgs.Handled;
                    }
                    if (whichXButton == 2)
                    {
                        this.OnMouseUp(MouseButton.Button2);
                        fEatMouse = this.MouseUpArgs.Handled;
                    }
                }

                if (eventArguments.MouseState == Native.MouseState.MouseWheel)
                {
                    var delta = (int)p.Mousedata >> 16;
                    this.OnMouseWheel(0, delta);
                    fEatMouse = this.MouseDownArgs.Handled;
                }
                if (eventArguments.MouseState == Native.MouseState.MouseHWheel)
                {
                    var delta = (int)p.Mousedata >> 16;
                    this.OnMouseWheel(delta, 0);
                    fEatMouse = this.MouseDownArgs.Handled;
                }
            }

            return(fEatMouse ? (IntPtr)1 : NativeMethods.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam));
        }
Пример #3
0
 public GlobalMouseHookEventArgs(LowLevelMouseInputEvent mouseData, MouseState mouseState)
 {
     Data  = mouseData;
     State = mouseState;
 }