示例#1
0
        private IntPtr HookMethod(int code, IntPtr wParam, IntPtr lParam)
        {
            if (code >= 0)
            {
                var eventArgs = new MouseHookEventArgs(wParam, lParam);

                switch ((Messages.Mouse)wParam)
                {
                    case Messages.Mouse.LeftButtonDown:
                        MouseButtonDown?.Invoke(eventArgs);
                        LeftMouseButtonDown?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.LeftButtonUp:
                        MouseButtonUp?.Invoke(eventArgs);
                        LeftMouseButtonUp?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.MiddleButtonDown:
                        MouseButtonDown?.Invoke(eventArgs);
                        MiddleMouseButtonDown?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.MiddleButtonUp:
                        MouseButtonUp?.Invoke(eventArgs);
                        MiddleMouseButtonUp?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.RightButtonDown:
                        MouseButtonDown?.Invoke(eventArgs);
                        RightMouseButtonDown?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.RightButtonUp:
                        MouseButtonUp?.Invoke(eventArgs);
                        RightMouseButtonUp?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.LeftButtonDoubleClick:
                        LeftMouseButtonDoubleClick?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.MouseWheel:
                        MouseScroll?.Invoke(eventArgs);
                        break;
                    case Messages.Mouse.MouseMove:
                        MouseMove?.Invoke(eventArgs);
                        break;
                }
            }
            return User32.CallNextHookEx(HookID, code, wParam, lParam);
        }
示例#2
0
        private void MouseHook_RightMouseButtonDown(MouseHookEventArgs e)
        {
            TotalRightClicks += 1;
            RightClicksChanged?.Invoke(this, EventArgs.Empty);

            ClicksChanged?.Invoke(this, EventArgs.Empty);
        }
示例#3
0
 private void MouseHook_MouseScroll(MouseHookEventArgs e)
 {
     TotalDistanceScrolled += 0.00432; // Meters
     DistanceScrolledChanged?.Invoke(this, EventArgs.Empty);
 }
示例#4
0
        private void MouseHook_MouseMove(MouseHookEventArgs e)
        {
            // 1px = 0.2mm
            if (PrevX == -1 || PrevY == -1)
            {
                PrevX = e.X;
                PrevY = e.Y;
                return;
            }
            var distance = Math.Sqrt(Math.Pow(e.X - PrevX, 2) + Math.Pow(e.Y - PrevY, 2));
            distance *= 0.0002; // Meters

            TotalDistanceTraveled += distance;
            DistanceTraveledChanged?.Invoke(this, EventArgs.Empty);

            PrevX = e.X;
            PrevY = e.Y;
        }
示例#5
0
        private void MouseHook_MiddleMouseButtonDown(MouseHookEventArgs e)
        {
            TotalMiddleClicks += 1;
            MiddleClicksChanged?.Invoke(this, EventArgs.Empty);

            ClicksChanged?.Invoke(this, EventArgs.Empty);
        }