public void ActivateMouseHook() { MouseHookID = MouseHook.SetHook(this.HandleMouseEvent); }
internal IntPtr HandleMouseEvent(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) { if (MouseMessage.WM_LBUTTONDOWN == (MouseMessage)wParam) { MouseClickCount++; switch (MouseClickCount) { case 1: MouseState = DesktopMouseState.LEFT_CLICK; Action action = delegate() { mouseClicksTracker.Start(); }; System.Windows.Application.Current.Dispatcher.BeginInvoke(action); break; case 2: MouseState = DesktopMouseState.DOUBLE_CLICK; break; case 3: MouseState = DesktopMouseState.TRIPLE_CLICK; break; case 4: MouseState = DesktopMouseState.QUAD_CLICK; break; } } else if (MouseMessage.WM_RBUTTONDOWN == (MouseMessage)wParam) { MouseState = DesktopMouseState.RIGHT_CLICK; } else if (MouseMessage.WM_RBUTTONUP == (MouseMessage)wParam) { MouseState = DesktopMouseState.RIGHT_CLICK_UP; } else if (MouseMessage.WM_LBUTTONUP == (MouseMessage)wParam) { MouseState = DesktopMouseState.LEFT_CLICK_UP; } else if (MouseMessage.WM_MOUSEMOVE == (MouseMessage)wParam) { MouseState = DesktopMouseState.MOUSE_MOVE; } IntPtr foregroundWindow = WindowsUtilities.GetForegroundWindow(); if (foregroundWindow == WindowsUtilities.FindWindow("CrypticWindow", null)) { if (MouseState == DesktopMouseState.MOUSE_MOVE) { FireMouseMoveEvent(); } else if (MouseState == DesktopMouseState.LEFT_CLICK) { FireMouseLeftClick(); } else if (MouseState == DesktopMouseState.RIGHT_CLICK) { FireMouseRightClick(); } else if (MouseState == DesktopMouseState.LEFT_CLICK_UP) { FireMouseLeftClickUp(); } else if (MouseState == DesktopMouseState.RIGHT_CLICK_UP) { FireMouseRightClickUp(); } else if (MouseState == DesktopMouseState.DOUBLE_CLICK) { FireMouseDoubleClick(); } else if (MouseState == DesktopMouseState.TRIPLE_CLICK) { FireMouseTripleCLick(); } } } return(MouseHook.CallNextHookEx(MouseHookID, nCode, wParam, lParam)); }