Пример #1
0
        /// <summary>
        ///     This is the callback method that is called whenever a low level mouse event is triggered.
        ///     We use it to call our individual custom events.
        /// </summary>
        private IntPtr MouseHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                var lParamStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));
                var e            = new AMouseHookEventArgs(lParamStruct);
                switch ((MouseMessages)wParam)
                {
                case MouseMessages.WmMouseMove:
                    TriggerMouseEvent(e, MouseEventNames.MouseMove, OnMove);
                    break;

                case MouseMessages.WmLButtonDown:
                    TriggerMouseEvent(e, MouseEventNames.LeftButtonDown, OnLeftButtonDown);
                    break;

                case MouseMessages.WmLButtonUp:
                    TriggerMouseEvent(e, MouseEventNames.LeftButtonUp, OnLeftButtonUp);
                    break;

                case MouseMessages.WmRButtonDown:
                    TriggerMouseEvent(e, MouseEventNames.RightButtonDown, OnRightButtonDown);
                    break;

                case MouseMessages.WmRButtonUp:
                    TriggerMouseEvent(e, MouseEventNames.RightButtonUp, OnRightButtonUp);
                    break;

                case MouseMessages.WmMButtonDown:
                    TriggerMouseEvent(e, MouseEventNames.MiddleButtonDown, OnMiddleButtonDown);
                    break;

                case MouseMessages.WmMButtonUp:
                    TriggerMouseEvent(e, MouseEventNames.MouseMove, OnMove);
                    e.MouseEventName = MouseEventNames.MiddleButtonUp;
                    OnMiddleButtonUp(e);
                    break;

                case MouseMessages.WmMouseWheel:
                    TriggerMouseEvent(e, MouseEventNames.MouseMove, OnMove);
                    e.MouseEventName = MouseEventNames.MouseWheel;
                    OnWheel(e);
                    break;
                }
            }
            return((IntPtr)User32.CallNextHookEx(_hookId, nCode, wParam, lParam));
        }
Пример #2
0
 private void OnMouseEvent(AMouseHookEventArgs e)
 {
     MouseEvent?.Invoke(this, e);
 }
Пример #3
0
 private void OnWheel(AMouseHookEventArgs e)
 {
     Wheel?.Invoke(this, e);
     OnMouseEvent(e);
 }
Пример #4
0
 private void OnMiddleButtonUp(AMouseHookEventArgs e)
 {
     MiddleButtonUp?.Invoke(this, e);
     OnMouseEvent(e);
 }
Пример #5
0
 private void OnRightButtonUp(AMouseHookEventArgs e)
 {
     RightButtonUp?.Invoke(this, e);
     OnMouseEvent(e);
 }
Пример #6
0
 private void OnLeftButtonDown(AMouseHookEventArgs e)
 {
     LeftButtonDown?.Invoke(this, e);
     OnMouseEvent(e);
 }
Пример #7
0
 private static void TriggerMouseEvent(AMouseHookEventArgs e, MouseEventNames name,
                                       Action <AMouseHookEventArgs> method)
 {
     e.MouseEventName = name;
     method(e);
 }