Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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;
        }
Beispiel #4
0
 /// <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);
 }