'How do I automate a Java application with AutoHotkey?
I am using a Java application at work. I need to send clicks to buttons and fill in textboxes. I would like these actions to happen in the background. The ahk_class of the window is SunAwtFrame, and none of the controls are exposed to WindowSpy.
I have used JavaFerret to determine that the first button I want to press has an AccessibleAction
Version Information:
Java virtual machine version: 1.7.0_25
Access Bridge Java class version: 1.7.0_25
Access Bridge Java DLL version: AccessBridge 2.0.2
Access Bridge Windows DLL version: AccessBridge 2.0.2
AccessibleContext information:
Name: New Call
Description: Place a new call
Role: push button
Role in en_US locale: push button
States: enabled,focusable,visible,showing,opaque
States in en_US locale: enabled,focusable,visible,showing,opaque
Index in parent: 1
Children count: 0
Bounding rectangle: [288, 317, 385, 376]
Top-level window name: Phone Assistant:
Top-level window role: frame
Parent name:
Parent role: panel
Visible descendents count: 0
AccessibleIcons info:
Number of icons: 1
Icon 0 description: jar:http://proxy.m5net.com/vox/pa/receptioncenter.jar!/resources/phone.png
Icon 0 height: 26
Icon 0 width: 27
AccessibleActions info:
Number of actions: 1
Action 0 name: click
Accessible Value information:
Current Value: 0
Maximum Value: 1
Minimum Value: 0
The accessibility docs tell me that I should be to tell the object to perform that action, but I don't know how to do this.
Preferably with AutoHotkey, how can this be done?
Solution 1:[1]
One option is to set the CoordMode to Relative (Or Window which does the same thing), and then you can use Click or MouseMove with hard-coded pixels relative to the top left corner of the window. You can find the coordinates you need with the Window Spy.
Another option, if you're unsure the hard-coded pixels will be reliable, is you can use the FindText library which allows you to specify what the text/icon is within the window and automate clicks based off of a certain number of pixels nearby that. So for example, if there's always the text "Name:" and an input box to the right of it, you can build a search for "me: [" (left edge of the input box pixels) and then click to the right of that. The library is impressive and uses the built-in ImageSearch command in AutoHotkey.
The successor of this library is called AutomateMyTask, which I haven't tried yet, but it claims that you can build your whole click script within a gui that this tool provides. Check it out!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dean Householder |
