/// <summary> /// Implements <see cref="IMouse.DragVertically(MouseButton, IUIItem, int)"/> /// </summary> public virtual void DragVertically(MouseButton mouseButton, IUIItem uiItem, int distance) { Move(uiItem.Bounds.Center()); var currentXLocation = Location.X; var currentYLocation = Location.Y; MouseWin32.MouseButtonDown(mouseButton); ActionPerformed(uiItem); Move(new Point(currentXLocation, currentYLocation + distance)); MouseWin32.MouseButtonUp(mouseButton); }
/// <summary> /// Implements <see cref="IMouse.DragAndDrop(MouseButton, IUIItem, Point, IUIItem, Point)"/> /// </summary> public virtual void DragAndDrop(MouseButton mouseButton, IUIItem draggedItem, Point startPosition, IUIItem dropItem, Point endPosition) { Move(startPosition); MouseWin32.MouseButtonDown(mouseButton); var dragStepFraction = (float)(1.0 / CoreAppXmlConfiguration.Instance.DragStepCount); for (var i = 1; i <= CoreAppXmlConfiguration.Instance.DragStepCount; i++) { var newX = startPosition.X + (endPosition.X - startPosition.X) * (dragStepFraction * i); var newY = startPosition.Y + (endPosition.Y - startPosition.Y) * (dragStepFraction * i); var newPoint = new Point((int)newX, (int)newY); Move(newPoint); } MouseWin32.MouseButtonUp(mouseButton); dropItem.ActionPerformed(Action.WindowMessage); }
/// <summary> /// Implements <see cref="IMouse.Click(MouseButton)"/> /// </summary> public virtual void Click(MouseButton mouseButton) { var currentClickLocation = Location; // Check if the location is the same as with last click if (LastClickLocations[mouseButton].Equals(currentClickLocation)) { // Get the timeout needed to not fire a double click var timeout = DoubleClickTime - DateTime.Now.Subtract(LastClickTimes[mouseButton]).Milliseconds; // Wait the needed time to prevent the double click if (timeout > 0) { Thread.Sleep(timeout + ExtraMillisecondsBecauseOfBugInWindows); } } // Perform the click MouseWin32.MouseButtonUpAndDown(mouseButton); // Update the time and location LastClickTimes[mouseButton] = DateTime.Now; LastClickLocations[mouseButton] = Location; }
/// <summary> /// Implements <see cref="IMouse.DoubleClick(MouseButton)"/> /// </summary> public virtual void DoubleClick(MouseButton mouseButton) { MouseWin32.MouseButtonUpAndDown(mouseButton); Thread.Sleep(CoreAppXmlConfiguration.Instance.DoubleClickInterval); MouseWin32.MouseButtonUpAndDown(mouseButton); }