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); }
private void MouseHook_RightMouseButtonDown(MouseHookEventArgs e) { TotalRightClicks += 1; RightClicksChanged?.Invoke(this, EventArgs.Empty); ClicksChanged?.Invoke(this, EventArgs.Empty); }
private void MouseHook_MouseScroll(MouseHookEventArgs e) { TotalDistanceScrolled += 0.00432; // Meters DistanceScrolledChanged?.Invoke(this, EventArgs.Empty); }
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; }
private void MouseHook_MiddleMouseButtonDown(MouseHookEventArgs e) { TotalMiddleClicks += 1; MiddleClicksChanged?.Invoke(this, EventArgs.Empty); ClicksChanged?.Invoke(this, EventArgs.Empty); }