예제 #1
0
 private void _mouseHook_MouseMove(object sender, MouseEventExtArgs e)
 {
     //MyModules._XMoveModule.MouseMove(e.Location);
 }
예제 #2
0
 private void MouseHook_MouseDown(object sender, MouseEventExtArgs e)
 {
     e.Handled = AppendKey(e.KeyCode);
 }
예제 #3
0
 private void MouseHook_MouseUp(object sender, MouseEventExtArgs e)
 {
     e.Handled = RemoveKey(e.KeyCode);
 }
예제 #4
0
        protected override bool HookCallback(IntPtr wParam, IntPtr lParam)
        {
            var mouseHookStruct = (MouseLLHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseLLHookStruct));

            MouseButtons button     = MouseButtons.None;
            Keys         keyCode    = Keys.None;
            short        mouseDelta = 0;
            int          clickCount = 0;

            bool isMouseButtonDown = false;
            bool isMouseButtonUp   = false;

            switch ((Messages)wParam)
            {
            case Messages.WM_LBUTTONDOWN:
            case Messages.WM_LBUTTONUP:
            case Messages.WM_LBUTTONDBLCLK:
                button  = MouseButtons.Left;
                keyCode = Keys.LButton;
                break;

            case Messages.WM_RBUTTONDOWN:
            case Messages.WM_RBUTTONUP:
            case Messages.WM_RBUTTONDBLCLK:
                button  = MouseButtons.Right;
                keyCode = Keys.RButton;
                break;

            case Messages.WM_MBUTTONDOWN:
            case Messages.WM_MBUTTONUP:
            case Messages.WM_MBUTTONDBLCLK:
                button  = MouseButtons.Middle;
                keyCode = Keys.MButton;
                break;

            case Messages.WM_XBUTTONDOWN:
            case Messages.WM_XBUTTONUP:
            case Messages.WM_XBUTTONDBLCLK:
                if (mouseHookStruct.MouseData == 1)
                {
                    button  = MouseButtons.XButton1;
                    keyCode = Keys.XButton1;
                }
                else
                {
                    button  = MouseButtons.XButton2;
                    keyCode = Keys.XButton2;
                }
                break;
            }


            switch ((Messages)wParam)
            {
            case Messages.WM_MOUSEWHEEL:
                mouseDelta = mouseHookStruct.MouseData;
                if (mouseDelta > 0)
                {
                    keyCode = (Keys)KeysEx.WheelUp;
                }
                if (mouseDelta < 0)
                {
                    keyCode = (Keys)KeysEx.WheelDown;
                }
                break;

            case Messages.WM_MOUSEHWHEEL:
                //mouseDelta = mouseHookStruct.MouseData;
                break;

            case Messages.WM_LBUTTONDOWN:
            case Messages.WM_RBUTTONDOWN:
            case Messages.WM_MBUTTONDOWN:
            case Messages.WM_XBUTTONDOWN:
                clickCount        = 1;
                isMouseButtonDown = true;
                break;

            case Messages.WM_LBUTTONUP:
            case Messages.WM_RBUTTONUP:
            case Messages.WM_MBUTTONUP:
            case Messages.WM_XBUTTONUP:
                clickCount      = 1;
                isMouseButtonUp = true;
                break;

            case Messages.WM_LBUTTONDBLCLK:
            case Messages.WM_RBUTTONDBLCLK:
            case Messages.WM_MBUTTONDBLCLK:
            case Messages.WM_XBUTTONDBLCLK:
                clickCount = 2;
                break;
            }

            var e = new MouseEventExtArgs(
                button,
                keyCode,
                clickCount,
                mouseHookStruct.Point.X,
                mouseHookStruct.Point.Y,
                mouseDelta);

            if (MouseDown != null && isMouseButtonDown)
            {
                MouseDown.Invoke(null, e);
            }

            if (MouseUp != null && isMouseButtonUp)
            {
                MouseUp.Invoke(null, e);
            }

            if (MouseWheel != null && mouseDelta != 0)
            {
                MouseWheel.Invoke(null, e);
            }

            if (MouseMove != null && !_oldPoint.Equals(mouseHookStruct.Point))
            {
                MouseMove.Invoke(null, e);
            }

            _oldPoint = mouseHookStruct.Point;
            return(e.Handled);
        }