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)); }
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)); }
public GlobalMouseHookEventArgs(LowLevelMouseInputEvent mouseData, MouseState mouseState) { Data = mouseData; State = mouseState; }