/// <summary> /// This method will call the OnMouseMove event exposed from the library and pass on the location of the mouse pointer. /// </summary> /// <param name="e">Argument passed by the MouseEvent under the Internal GlobalMouseHook.</param> /// <returns>Returns true if the event was handled and false if not.</returns> bool MouseMove(InternalGlobalMouseHook.POINT mousePos) { //Compared to the previous two methods, we just need the position of the mouse as it moved. MousePosition mousePosition = new MousePosition(mousePos.x, mousePos.y); GlobalMouseEventArgs globalMouseEventArgs = new GlobalMouseEventArgs(GHMouseButtons.None, mousePosition); //No button was pressed. We only need to pass on the mousePosition to the event. return(CallEvent(OnMouseMove, globalMouseEventArgs)); }
/// <summary> /// This method will call the OnButtonUp event exposed from the library and pass on information about the button that was let go and the location of the mouse pointer. /// </summary> /// <param name="e">Argument passed by the MouseEvent under the Internal GlobalMouseHook.</param> /// <returns>Returns true if the event was handled and false if not.</returns> bool ButtonUp(GlobalMouseHookEventArgs e) { GHMouseButtons mouseButton = MouseMessageToGHMouseButton(e.MouseMessages, e.MouseData.mouseData); currentMouseButtonsPressed.Add(mouseButton); //Add mouse button to the list of currently being pressed mouse buttons. MousePosition mousePosition = new MousePosition(e.MouseData.pt.x, e.MouseData.pt.y); GlobalMouseEventArgs globalMouseEventArgs = new GlobalMouseEventArgs(mouseButton, mousePosition); return(CallEvent(OnButtonUp, globalMouseEventArgs)); }
bool MouseWheelEvent(GlobalMouseHookEventArgs e) { MousePosition mousePosition = new MousePosition(e.MouseData.pt.x, e.MouseData.pt.y); /* Compared to the other events, we need to find the rotation of the scroll wheel (wheel delta). Unfortunately, the low level mouse event doesn't pass it as a human readable value. * Instead, it is passed on as a high order word of the e.mouseData.mouseData value. We have to retrieve that High Order Word by using a helper function called GetSignedHWord.*/ WheelRotation wheelRotation = (WheelRotation)(Helper.GetSignedHWORD(e.MouseData.mouseData)); //The Wheel Delta will always be either 120 for forwards movement and -120 for backwards movement which is already declared on the WheelRotation enum. All we have to do is cast the Wheel Delta to WheelRotation. GlobalMouseEventArgs globalMouseEventArgs = new GlobalMouseEventArgs(GHMouseButtons.None, mousePosition, wheelRotation); return(CallEvent(OnMouseWheelScroll, globalMouseEventArgs)); }
/// <summary> /// This method will call the OnButtonDown event exposed from the library and pass on information about the button that was pressed and the location of the mouse pointer. /// </summary> /// <param name="e">Argument passed by the MouseEvent under the Internal GlobalMouseHook.</param> /// <returns>Returns true if the event was handled and false if not.</returns> bool ButtonDown(GlobalMouseHookEventArgs e) { GHMouseButtons mouseButton = MouseMessageToGHMouseButton(e.MouseMessages, e.MouseData.mouseData); //We convert the ugly looking MouseMessages to an enumartion of the GHMouseButtons. currentMouseButtonsPressed.Remove(mouseButton); //Remove the mouse button from the list of buttons currently being pressed. MousePosition mousePosition = new MousePosition(e.MouseData.pt.x, e.MouseData.pt.y); //Store the x and y coordinates of the mouse pointer on the screen. GlobalMouseEventArgs globalMouseEventArgs = new GlobalMouseEventArgs(mouseButton, mousePosition); //Now, we store the values of the mouseButton and the mousePosition into one class which will be the argument for the OnButtonDown event. return(CallEvent(OnButtonDown, globalMouseEventArgs)); //Let's now call the CallEvent method which handles the necessary "set up" needed before calling the OnButtonDown event for us. We also pass on the globalMouseEventArgs as the argument of the event. //It also returns a boolean value which tells us if the event was handled. We have to pass that value back to the _globalMouseHook_MouseEvent method. }
/// <summary> /// Calls an event after taking care of the necessary setting up needed. /// </summary> /// <param name="_handler">The event that will be called.</param> /// <param name="argument">The argument that will be passed on to the methods subscribed to the event.</param> /// <returns>Returns true if the event was handled and false if not.</returns> bool CallEvent(EventHandler <GlobalMouseEventArgs> _handler, GlobalMouseEventArgs argument) { GlobalMouseEventArgs _argument = argument; EventHandler <GlobalMouseEventArgs> handler = _handler; if (handler == null) //Check if there's anything subscribed to the event. If there's none, we exit from the method. { return(false); } handler(this, _argument); //Call the event return(_argument.Handled); //Now, we return the bool value of the handled variable back to the method that called this method. }