Simulate input/Mouse

Revision as of 01:47, 14 August 2009 by rosettacode>Kevin Reid (omit TI-BASIC)

Simulate the click of a mouse button by the user. Specify if the target GUI may be externally created.

Task
Simulate input/Mouse
You are encouraged to solve this task according to the task description, using any language you may know.

AutoHotkey

target gui may be externally created. <lang AutoHotkey> WinActivate, ahk_class MozillaUIWindowClass Click 200, 200 right  ; relative to external window (firefox) sleep, 2000 WinMinimize CoordMode, Mouse, Screen Click 400, 400 right  ; relative to top left corner of the screen. </lang>

Java

You can click on any Component using a Robot and the Component's location: <lang java>Point p = component.getLocation(); Robot robot = new Robot(); robot.mouseMove(p.getX(), p.getY()); //you may want to move a few pixels closer to the center by adding to these values robot.mousePress(InputEvent.BUTTON1_MASK); //BUTTON1_MASK is the left button, BUTTON2_MASK is the middle button, BUTTON3_MASK is the right button robot.mouseRelease(InputEvent.BUTTON1_MASK);</lang> If you don't have a reference to the component, you'll need to guess at where it is.

Library: Swing

If you have a reference to the AbstractButton this is simpler: <lang java>button.doClick(); //optionally, give an integer argument for the number of milliseconds to hold the button down</lang>

Tcl

Within an Application

Library: Tk

<lang tcl># Simulate a full click cycle: button down and up event generate .okBtn <ButtonPress-1> -x 5 -y 5 event generate .okBtn <ButtonRelease-1> -x 5 -y 5</lang> Note that many of Tk's windows also need appropriate <Enter> and <Leave> events in order to work correctly. For the process of actually simulating a click on a button, it is actually easier to work at the method-call level rather than the event generation level: <lang tcl>.okBtn invoke</lang>