Mouse¶
Methods to interact with the mouse.
type EMouseDistribution
The available distributions used to generate a point in a box.
- EMouseDistribution = (
MOUSE_DISTRIBUTION_DEFAULT, // Use Mouse.Distribution MOUSE_DISTRIBUTION_RANDOM, // Completely random point MOUSE_DISTRIBUTION_GAUSS, // Weighted towards the center MOUSE_DISTRIBUTION_SKEWED, // Weighted torwards current mouse position MOUSE_DISTRIBUTION_ROWP // Weighted torwards current mouse position but more “rounded” compared to MOUSE_DISTRIBUTION_SKEWED
);
type TMouse
- TMouse = record(TSRLBaseRecord)
Speed: Double; // Overall mouse speed (Default: 12) Gravity, Wind: Double; // Gravity & Wind for generating mouse path (Default: 9 & 5) Distribution: EMouseDistribution; // Default distribution to use (Default: MOUSE_DISTRIBUTION_ROWP) MissChance: Double; // Percentage chance to “Miss” the mouse (Default: 10) IdleInterval: Double; // Distance to travel before calling Mouse.Idle() (Default: 0) IdleProgress: Double; IdleGoal: Double; OnMoving: TMouseMovingEvent; // Callback while mouse is being moved OnTeleport: TMouseTeleportEvent; // Callback when mouse is teleported
end;
Mouse.Setup¶
procedure TMouse.Setup;
Initializes mouse variables.
Note
This is automatically called on the Mouse variable.
Mouse.Teleport¶
procedure TMouse.Teleport(X, Y: Int32);
Teleport the mouse to the desired X,Y coordinates.
Example:
Mouse.Teleport(50, 50);
Mouse.Teleport¶
procedure TMouse.Teleport(P: TPoint);
Teleport the mouse to the desired point.
Example:
Mouse.Teleport(50, 50);
Mouse.Position¶
function TMouse.Position: TPoint;
Returns the mouse current position.
Example:
var P: TPoint;
P := Mouse.Position();
WriteLn('X: ', P.X);
WriteLn('Y: ', P.Y);
Mouse.Hold¶
procedure TMouse.Hold(Button: Int32);
Holds the desired mouse button down. The button will continue to be held down until Mouse.Release is called.
- Available buttons:
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_SCROLL
MOUSE_EXTRA_1
MOUSE_EXTRA_2
Example:
Mouse.Hold(MOUSE_LEFT); // The mouse is now holding down left click.
Mouse.Release¶
procedure TMouse.Release(Button: Int32);
Releases the desired mouse button which has been previously held.
- Available buttons:
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_SCROLL
MOUSE_EXTRA_1
MOUSE_EXTRA_2
Example:
Mouse.Release(MOUSE_LEFT); // The mouse is no holding left click.
Mouse.WindMouse¶
procedure TMouse.Release(Button: Int32);
The internal algorithm used by Mouse.Move to move the mouse in a human’ish way.
Credit: BenLand100 (https://github.com/BenLand100/SMART/blob/master/src/EventNazi.java#L201)
Mouse.Idle¶
procedure TMouse.Idle;
When IdleInterval is reached this is called. Override to change behavior.
An IdleInterval of 1.0 equals to the distance between the top left and bottom right of the client.
Assuming the client dimensions are 500,500 the distance between (0,0) and (500,500) is ~700. With an IdleInterval of 2.0 this would automatically be called every time the mouse has travelled ~1400 pixels.
Mouse.Move¶
procedure TMouse.Move(Destination: TPoint);
Moves the mouse to the desired point.
Example:
var P: TPoint;
P.X := 50;
P.Y := 50;
Mouse.Move(P); // The mouse is now at 50,50
Mouse.Move¶
procedure TMouse.Move(P: TPoint);
Moves the mouse to the desired X,Y coordinate.
Example:
Mouse.Move(50, 50); // The mouse is now at 50,50
Mouse.Move¶
procedure TMouse.Move(Center: TPoint; Radius: Int32; ForcedMove: Boolean = False);
Moves the mouse to a random point in an circle defined by Center and Radius.
ForcedMove determines if the mouse should be moved if already inside the circle. By default this is False.
Example:
Mouse.Move([100, 100], 25); // The mouse is now randomly within 100,100 with a radius of 25.
Mouse.Move¶
procedure TMouse.Move(Box: TBox; ForcedMove: Boolean = False; Distribution: EMouseDistribution = MOUSE_DISTRIBUTION_DEFAULT);
Moves the mouse to a random point in the box.
ForcedMove determines if the mouse should be moved if already in the box. By default this is False
Distribution determines the method to generate a random point. By default this uses Mouse.Distribution
Example:
var B: TBox;
B.X1 := 100;
B.Y1 := 100;
B.X2 := 200;
B.Y2 := 200;
Mouse.Move(B); // The mouse is now randomly within 100,100,200,200
Mouse.Move¶
procedure TMouse.Move(Circle: TCircle; ForcedMove: Boolean = False);
Moves the mouse to a random point in an circle.
ForcedMove determines if the mouse should be moved if already in the circle. By default this is False.
Example:
var C: TCircle;
C.X := 100;
C.Y := 100;
C.Radius := 25;
Mouse.Move(C); // The mouse is now randomly within 100,100 with a radius of 25.
Mouse.Move¶
procedure TMouse.Move(Rect: TRectangle; ForcedMove: Boolean = False);
Moves the mouse to a random point in an rectangle.
ForcedMove determines if the mouse should be moved if already in the rectangle. By default this is False.
Example:
var TPA: TPointArray;
var R: TRectangle;
R := TPA.MinAreaRect();
Mouse.Move(R);
Mouse.Click¶
procedure TMouse.Click(Button: Int32);
Clicks the mouse with the desired button at the current mouse position.
- Available buttons:
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_SCROLL
MOUSE_EXTRA_1
MOUSE_EXTRA_2
Example:
Mouse.Click(MOUSE_LEFT); // Left click the current mouse position
Mouse.Click¶
procedure TMouse.Click(X, Y: Int32; Button: Int32);
Moves the mouse to to X,Y and clicks the desired button.
- Available buttons:
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_SCROLL
MOUSE_EXTRA_1
MOUSE_EXTRA_2
Example:
Mouse.Click(50, 50, MOUSE_LEFT); // Left click at 50,50
Mouse.Click¶
procedure TMouse.Click(P: TPoint; Button: Int32);
Moves the mouse to P.X,P.Y and click the desired button.
- Available buttons:
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_SCROLL
MOUSE_EXTRA_1
MOUSE_EXTRA_2
Example:
var P: TPoint;
P.X := 50;
P.Y := 50;
Mouse.Click(P, MOUSE_LEFT); // Left click at 50,50
Mouse.Click¶
TMouse.Click(Circle: TCircle; Button: Int32; ForcedMove: Boolean = False);
Moves the mouse to a random point in an circle defined by Center and Radius and clicks the desired button.
ForcedMove determines if the mouse should be moved if already in the circle. By default this is False.
Example:
Mouse.Click([100, 100], 25, MOUSE_LEFT); // Left clicked somewhere nearby 100,100 with a radius of 25.
Mouse.Click¶
procedure TMouse.Click(Box: TBox; Button: Int32; ForcedMove: Boolean = False; Distribution: EMouseDistribution = MOUSE_DISTRIBUTION_DEFAULT);
Moves the mouse to a random point in the box and clicks the desired button.
ForcedMove determines if the mouse should be moved if already in the box. By default this is False
Distribution determines the method to generate a random point. By default this uses Mouse.Distribution
- Available buttons:
MOUSE_LEFT
MOUSE_RIGHT
MOUSE_SCROLL
MOUSE_EXTRA_1
MOUSE_EXTRA_2
Example:
var B: TBox;
B.X1 := 100;
B.Y1 := 100;
B.X2 := 200;
B.Y2 := 200;
Mouse.Click(B, MOUSE_LEFT); // Left clicked somewhere within 100,100,200,200
Mouse.Click¶
TMouse.Click(Circle: TCircle; Button: Int32; ForcedMove: Boolean = False);
Moves the mouse to a random point in an circle and clicks the desired button.
ForcedMove determines if the mouse should be moved if already in the circle. By default this is False.
Example:
var C: TCircle;
C.X := 100;
C.Y := 100;
C.Radius := 25;
Mouse.Click(C, MOUSE_LEFT); // Left clicked somewhere nearby 100,100 with a radius of 25.
Mouse.Click¶
procedure TMouse.Click(Rect: TRectangle; Button: Int32; ForcedMove: Boolean = False);
Moves the mouse to a random point in an rectangle then clicks the desired button.
ForcedMove determines if the mouse should be moved if already in the rectangle. By default this is False.
Example:
var TPA: TPointArray;
var R: TRectangle;
R := TPA.MinAreaRect();
Mouse.Click(R, MOUSE_LEFT);
Mouse.Miss¶
function TMouse.Miss(P: TPoint): TPoint;
“Misses” the destination point P. Will stop somewhere along the path or overshoot. Returns the position the mouse was moved to.
This could automatically be called depending on Mouse.MissChance.
Mouse.DragTo¶
procedure TMouse.DragTo(X, Y: Int32; Button: Int32 = MOUSE_LEFT)
Holds the desired button and moves the mouse to X,Y coordinates.
Button by default is MOUSE_LEFT.
Example:
Mouse.DragTo(50, 50); // Moves the mouse to 50,50 while holding MOUSE_LEFT
Mouse.DragTo¶
procedure TMouse.DragTo(P: TPoint; Button: Int32 = MOUSE_LEFT)
Holds the desired button and moves the mouse to P coordinates.
Button by default is MOUSE_LEFT.
Example:
var P: TPoint;
P.X := 50;
P.Y := 50;
Mouse.DragTo(P); // Moves the mouse to 50,50 while holding MOUSE_LEFT
Mouse.Scroll¶
procedure TMouse.Scroll(Amount: Int32; Down: Boolean);
Scrolls the mouse X amount of times at the current mouse position.
Example:
Mouse.Scroll(5, True); // Scroll 5 times down
Mouse.Scroll(5, False); // Scroll 5 times up
Mouse.Scroll¶
procedure TMouse.Scroll(P: TPoint; Scrolls: Int32; Down: Boolean);
Moves the mouse to desired position P then scrolls X amount of times.
Example:
var P: TPoint;
P.X := 50;
P.Y := 50;
Mouse.Scroll(P, 5, True); // Scroll 5 times down at 50,50
Mouse.Scroll(P, 5, False); // Scroll 5 times up at 50,50
Mouse.Scroll¶
procedure TMouse.Scroll(Box: TBox; Amount: Int32; Down: Boolean);
Moves the mouse to a random point in the box then scrolls X amount of times.
Example:
var B: TBox;
B.X1 := 100;
B.Y1 := 100;
B.X2 := 200;
B.Y2 := 200;
Mouse.Scroll(B, 5, True); // Scroll the mouse down 5 times somewhere within 100,100,200,200
Mouse.Scroll(B, 5, False); // Scroll the mouse up 5 times somewhere within 100,100,200,200
var Mouse