
com.github.becausetesting.autoit.Application Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of commons Show documentation
Show all versions of commons Show documentation
A common libraries used for testing framework.
/**
* Copyright (c) 2011 Richard Kanavati
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.github.becausetesting.autoit;
import jxl.common.Logger;
import com.github.becausetesting.dll.DllUtils;
import com.github.becausetesting.file.FileUtils;
import com.github.becausetesting.host.HostUtils;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.LibraryLoader;
import com.jacob.com.SafeArray;
import com.jacob.com.Variant;
/**
* A Java AutoItX3 Bridge.
*
* @author Richard Kanavati
* @modify Alter hu
*/
public class Application {
private static Logger log = Logger.getLogger(Application.class);
/**
* The AutoItX Component.
*/
protected static ActiveXComponent autoItX;
/**
* Maximizes the specified window.
*/
public final static int SW_MAXIMIZE = 3;
/**
* Minimizes the specified window and activates the next top-level window in
* the Z order.
*/
public final static int SW_HIDE = 0;
/**
* Activates and displays the window. If the window is minimized or
* maximized, the system restores it to its original size and position. An
* application should specify this flag when restoring a minimized window.
*/
public final static int SW_RESTORE = 9;
/**
* Activates the window and displays it in its current size and position.
*/
public final static int SW_SHOW = 5;
/**
* Sets the show state based on the SW_ value specified by the program that
* started the application.
*/
public final static int SW_SHOWDEFAULT = 10;
/**
* Activates the window and displays it as a maximized window.
*/
public final static int SW_SHOWMAXIMIZED = 3;
/**
* Activates the window and displays it as a minimized window.
*/
public final static int SW_SHOWMINIMIZED = 2;
/**
* Displays the window as a minimized window. This value is similar to
* SW_SHOWMINIMIZED, except the window is not activated.
*/
public final static int SW_SHOWMINNOACTIVE = 7;
/**
* Displays the window in its current size and position. This value is
* similar to SW_SHOW, except the window is not activated.
*/
public final static int SW_SHOWNA = 8;
/**
* Displays a window in its most recent size and position. This value is
* similar to SW_SHOWNORMAL, except the window is not actived.
*/
public final static int SW_SHOWNOACTIVATE = 4;
/**
* Activates and displays a window. If the window is minimized or maximized,
* the system restores it to its original size and position. An application
* should specify this flag when displaying the window for the first time.
*/
public final static int SW_SHOWNORMAL = 1;
/**
* Sets the way coords are used in the caret functions, either absolute
* coords or coords relative to the current active window:
* 0 = relative coords to the active window,
* 1 = absolute screen coordinates (default),
* 2 = relative coords to the client area of the active window.
*/
public final static String OPT_CARET_COORD_MODE = "CaretCoordMode";
/**
* Alters the length of the brief pause in between mouse clicks. Time in
* milliseconds to pause (default=10).
*/
public final static String OPT_MOUSE_CLICK_DELAY = "MouseClickDelay";
/**
* Alters the length of the brief pause in between mouse clicks. Time in
* milliseconds to pause (default=10).
*/
public final static String OPT_MOUSE_CLICK_DOWN_DELAY = "MouseClickDownDelay";
/**
* Alters the length of the brief pause at the start and end of a mouse drag
* operation. Time in milliseconds to pause (default=250).
*/
public final static String OPT_MOUSE_CLICK_DRAG_DELAY = "MouseClickDragDelay";
/**
* Sets the way coords are used in the mouse functions, either absolute
* coords or coords relative to the current active window:
* 0 = relative coords to the active window
* 1 = absolute screen coordinates (default)
* 2 = relative coords to the client area of the active window
*/
public final static String OPT_MOUSE_COORD_MODE = "MouseCoordMode";
/**
* Sets the way coords are used in the mouse functions, either absolute
* coords or coords relative to the current active window:
* 0 = relative coords to the active window
* 1 = absolute screen coordinates (default)
* 2 = relative coords to the client area of the active window
*/
public final static String OPT_PIXEL_COORD_MODE = "PixelCoordMode";
/**
* Sets the way coords are used in the pixel functions, either absolute
* coords or coords relative to the current active window:
* 0 = relative coords to the active window
* 1 = absolute screen coordinates (default)
* 2 = relative coords to the client area of the active window
*/
public final static String OPT_SEND_ATTACH_MODE = "SendAttachMode";
/**
* Specifies if AutoIt attaches input threads when using then Send()
* function. When not attaching (default mode=0) detecting the state of
* capslock/scrolllock and numlock can be unreliable under NT4. However,
* when you specify attach mode=1 the Send("{... down/up}") syntax will not
* work and there may be problems with sending keys to "hung" windows.
* ControlSend() ALWAYS attaches and is not affected by this mode.
* 0 = don't attach (default)
* 1 = attach
*/
public final static String OPT_SEND_CAPSLOCK_MODE = "SendCapslockMode";
/**
* Specifies if AutoIt should store the state of capslock before a Send
* function and restore it afterwards.
* 0 = don't store/restore
* 1 = store and restore (default)
*/
public final static String OPT_SEND_KEY_DELAY = "SendKeyDelay";
/**
* Alters the length of time a key is held down before released during a
* keystroke. For applications that take a while to register keypresses (and
* many games) you may need to raise this value from the default. Time in
* milliseconds to pause (default=1).
*/
public final static String OPT_SEND_KEY_DOWN_DELAY = "SendKeyDownDelay";
/**
* Specifies if hidden window text can be "seen" by the window matching
* functions.
* 0 = Do not detect hidden text (default)
* 1 = Detect hidden text
*/
public final static String OPT_WIN_DETECT_HIDDEN_TEXT = "WinDetectHiddenText";
/**
* Allows the window search routines to search child windows as well as
* top-level windows.
* 0 = Only search top-level windows (default)
* 1 = Search top-level and child windows
*/
public final static String OPT_WIN_SEARCH_CHILDREN = "WinSearchChildren";
/**
* Alters the method that is used to match window text during search
* operations.
* 1 = Complete / Slow mode (default)
* 2 = Quick mode In quick mode AutoIt can usually only "see" dialog text,
* button text and the captions of some controls. In the default mode much
* more text can be seen (for instance the contents of the Notepad window).
* If you are having performance problems when performing many window
* searches then changing to the "quick" mode may help.
*/
public final static String OPT_WIN_TEXT_MATCH_MODE = "WinTextMatchMode";
/**
* Alters the method that is used to match window titles during search
* operations.
* 1 = Match the title from the start (default)
* 2 = Match any substring in the title
* 3 = Exact title match
* 4 = Advanced mode, see Window Titles & Text (Advanced)
*/
public final static String OPT_WIN_TITLE_MATCH_MODE = "WinTitleMatchMode";
/**
* Alters how long a script should briefly pause after a successful
* window-related operation. Time in milliseconds to pause (default=250).
*/
public final static String OPT_WIN_WAIT_DELAY = "WinWaitDelay";
static {
// Initialize AutoIt
initAutoItX();
}
/**
* Initializes the AutoItX Jacob COM object. first register the autoit
* manually in the host
*/
public static void initAutoItX() {
// register the COM Component
String autoitName = "AutoItX3";
String jacobName = "jacob";
String autoitResourcePath = null;
if (HostUtils.is64Bit()) {
autoitResourcePath = "/autoit/x64";
} else {
autoitResourcePath = "/autoit/x86";
}
DllUtils.loadDll(autoitResourcePath, autoitName);
String dllPath = FileUtils.copyDll(autoitResourcePath, jacobName);
System.setProperty("jacob.dll.path", dllPath);
//System.setProperty(LibraryLoader.JACOB_DLL_PATH, tempJacobPath);
//LibraryLoader.loadJacobLibrary();
autoItX = new ActiveXComponent("AutoItX3.Control");
log.info("The AutoIt Library been loaded, and an activeX component been created");
/*
* 1. exception error: Caused by: com.jacob.com.ComFailException: Can't
* get object clsid from progid A: Your host had not registerred the
* autoitx.dll file
*
* 2. exception error: Caused by: com.jacob.com.ComFailException: Can't
* co-create object A: Your host registerred autoitx.dll version is not
* suitable with your host version(32 bit or 64 bit)
*
* 3. Exception in thread "main" java.lang.NoSuchFieldError: m_pDispatch
* A: Must keep the "jacob-1.14.3-x64.dll version same as the jacob.jar
* file version. otherwise it will throw this.
*
*
*
*
*
*/
}
/**
* The AutoItX version.
*
* @return The AutoItX version.
*/
public String getVersion() {
return autoItX.getProperty("version").getString();
}
/**
* Value of the error flag.
*
* @return The value of the error flag.
*/
public int getError() {
Variant error = autoItX.invoke("error");
return error.getInt();
}
/**
* Retrieves text from the clipboard.
*
* @return A string containing the text on the clipboard. Sets error to 1 if
* clipboard is empty or contains a non-text entry.
*/
public String clipGet() {
return autoItX.invoke("ClipGet").getString();
}
/**
* Writes text to the clipboard.
*
* @param value
* The text to write to the clipboard.
*/
public void clipPut(String value) {
autoItX.invoke("ClipPut", new Variant(value));
}
/**
* Maps a network drive.
*
* Doesn't always work
*
*
* @param device
* The device to map, for example "O:" or "LPT1:". If you pass a
* blank string for this parameter a connection is made but not
* mapped to a specific drive. If you specify "*" an unused drive
* letter will be automatically selected.
* @param remote
* The remote share to connect to in the form "\\server\share".
* @return True if success, false otherwise
*/
public boolean driveMapAdd(String device, String remote) {
return driveMapAdd(device, remote, 0, "", "");
}
/**
* Maps a network drive.
*
* @param device
* The device to map, for example "O:" or "LPT1:". If you pass a
* blank string for this parameter a connection is made but not
* mapped to a specific drive. If you specify "*" an unused drive
* letter will be automatically selected.
* @param remote
* The remote share to connect to in the form "\\server\share".
* @param flags
* A combination of the following: 0 = default, 1 = Persistent
* mapping, 8 = Show authentication dialog if required
* @param username
* The username
* @param password
* The password
* @return True if success, false otherwise
*/
public boolean driveMapAdd(String device, String remote, int flags, String username, String password) {
Variant vDevice = new Variant(device);
Variant vRemote = new Variant(remote);
Variant vFlags = new Variant(flags);
Variant vUsername = new Variant(username);
Variant vPassword = new Variant(password);
Variant[] params = new Variant[] { vDevice, vRemote, vFlags, vUsername, vPassword };
Variant result = autoItX.invoke("DriveMapAdd", params);
if (result.getvt() == Variant.VariantString) {
return oneToTrue(Integer.parseInt(result.getString()));
}
return oneToTrue(result.getInt());
}
/**
* Maps a network drive.
*
* @param device
* The device to map, for example "O:" or "LPT1:". If you pass a
* blank string for this parameter a connection is made but not
* mapped to a specific drive. If you specify "*" an unused drive
* letter will be automatically selected.
* @param remote
* The remote share to connect to in the form "\\server\share".
* @param flags
* A combination of the following:0 = default, 1 = Persistent
* mapping, 8 = Show authentication dialog if required
* @return True if success, false otherwise
*/
public boolean driveMapAdd(String device, String remote, int flags) {
Variant vDevice = new Variant(device);
Variant vRemote = new Variant(remote);
Variant vFlags = new Variant(flags);
Variant[] params = new Variant[] { vDevice, vRemote, vFlags };
Variant result = autoItX.invoke("DriveMapAdd", params);
if (result.getvt() == Variant.VariantString) {
return oneToTrue(Integer.parseInt(result.getString()));
}
return oneToTrue(result.getInt());
}
/**
* Disconnects a network drive.
*
* @param device
* The device to disconnect, e.g. "O:" or "LPT1:".
* @return True if success, false otherwise
*/
public boolean driveMapDelete(String device) {
Variant result = autoItX.invoke("DriveMapDel", device);
return oneToTrue(result);
}
/**
* The device (drive or printer) letter to query. Eg. "O:" or "LPT1:"
*
* @param device
* The device to disconnect, e.g. "O:" or "LPT1:".
* @return Details of the mapping, e.g. \\server\share. If blank, sets
* .error() to 1.
*/
public String driveMapGet(String device) {
Variant result = autoItX.invoke("DriveMapGet", device);
return result.getString();
}
/**
* Deletes a value from a standard format .ini file.
*
* @param filename
* The filename of the .ini file.
* @param section
* The section name in the .ini file.
* @param key
* The key name in the in the .ini file. If no key name is given
* the entire section is deleted.
* @return True if success, false otherwise
*/
public boolean iniDelete(String filename, String section, String key) {
Variant vFilename = new Variant(filename);
Variant vSection = new Variant(section);
Variant vKey = new Variant(key);
Variant[] params = new Variant[] { vFilename, vSection, vKey };
Variant result = autoItX.invoke("IniDelete", params);
return oneToTrue(result);
}
/**
* Deletes a value from a standard format .ini file.
*
* @param filename
* The filename of the .ini file.
* @param section
* The section name in the .ini file.
* @return True if success, false otherwise
*/
public boolean iniDelete(String filename, String section) {
return iniDelete(filename, section, "");
}
/**
* Reads a value from a standard format .ini file.
*
* @param filename
* The filename of the .ini file.
* @param section
* The section name in the .ini file.
* @param key
* The key name in the in the .ini file.
* @param defaultVal
* The default value to return if the requested key is not found.
* @return The requested key value if found, otherwise the default value.
*/
public String iniRead(String filename, String section, String key, String defaultVal) {
Variant vFilename = new Variant(filename);
Variant vSection = new Variant(section);
Variant vKey = new Variant(key);
Variant vDefault = new Variant(defaultVal);
Variant[] params = new Variant[] { vFilename, vSection, vKey, vDefault };
Variant result = autoItX.invoke("IniRead", params);
return result.getString();
}
/**
* Writes a value to a standard format .ini file.
*
* @param filename
* The filename of the .ini file.
* @param section
* The section name in the .ini file.
* @param key
* The key name in the in the .ini file.
* @param value
* The value to write/change.
* @return True if success, false otherwise.
*/
public Boolean iniWrite(String filename, String section, String key, String value) {
Variant vFilename = new Variant(filename);
Variant vSection = new Variant(section);
Variant vKey = new Variant(key);
Variant vValue = new Variant(value);
Variant[] params = new Variant[] { vFilename, vSection, vKey, vValue };
Variant result = autoItX.invoke("IniWrite", params);
return oneToTrue(result);
}
/**
* Generates a checksum for a region of pixels.
*
* @param left
* Left coordinate of rectangle.
* @param top
* Top coordinate of rectangle.
* @param right
* Right coordinate of rectangle.
* @param bottom
* Bottom coordinate of rectangle.
* @param step
* Instead of checksumming each pixel use a value larger than 1
* to skip pixels (for speed). E.g. A value of 2 will only check
* every other pixel. Default is 1.
* @return The checksum value of the region.
*/
public double pixelChecksum(int left, int top, int right, int bottom, int step) {
Variant vLeft = new Variant(left);
Variant vTop = new Variant(top);
Variant vRight = new Variant(right);
Variant vBottom = new Variant(bottom);
Variant vStep = new Variant(step);
Variant[] params = new Variant[] { vLeft, vTop, vRight, vBottom, vStep };
Variant result = autoItX.invoke("PixelChecksum", params);
return result.getDouble();
}
/**
* Generates a checksum for a region of pixels.
*
* @param left
* Left coordinate of rectangle.
* @param top
* Top coordinate of rectangle.
* @param right
* Right coordinate of rectangle.
* @param bottom
* Bottom coordinate of rectangle.
* @return The checksum value of the region.
*/
public double pixelChecksum(int left, int top, int right, int bottom) {
return pixelChecksum(left, top, right, bottom, 0);
}
/**
* Returns a pixel color according to x,y pixel coordinates.
*
* @param x
* x coordinate of pixel.
* @param y
* y coordinate of pixel.
* @return Decimal value of pixel's color.
*/
public float pixelGetColor(int x, int y) {
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant[] params = new Variant[] { vX, vY };
Variant result = autoItX.invoke("PixelGetColor", params);
return result.getInt();
}
/**
* Searches a rectangle of pixels for the pixel color provided.
*
* @param left
* left coordinate of rectangle.
* @param top
* top coordinate of rectangle.
* @param right
* right coordinate of rectangle.
* @param bottom
* bottom coordinate of rectangle.
* @param color
* Color value of pixel to find (in decimal or hex).
* @param shadeVariation
* A number between 0 and 255 to indicate the allowed number of
* shades of variation of the red, green, and blue components of
* the colour. Default is 0 (exact match).
* @param step
* Instead of searching each pixel use a value larger than 1 to
* skip pixels (for speed). E.g. A value of 2 will only check
* every other pixel. Default is 1.
* @return The pixel's coordinates in a 2 element array, otherwise sets
* .error() to one.
*/
public long[] pixelSearch(int left, int top, int right, int bottom, int color, int shadeVariation, int step) {
Variant vLeft = new Variant(left);
Variant vTop = new Variant(top);
Variant vRight = new Variant(right);
Variant vBottom = new Variant(bottom);
Variant vColor = new Variant(color);
Variant vShadeVariation = new Variant(shadeVariation);
Variant vStep = new Variant(step);
Variant[] params = new Variant[] { vLeft, vTop, vRight, vBottom, vColor, vShadeVariation, vStep };
Variant result = autoItX.invoke("PixelSearch", params);
long[] l = new long[2];
if (result.getvt() == 8204) {
l[0] = result.toSafeArray().getLong(0);
l[1] = result.toSafeArray().getLong(1);
}
return l;
}
/**
* Searches a rectangle of pixels for the pixel color provided.
*
* @param left
* left coordinate of rectangle.
* @param top
* top coordinate of rectangle.
* @param right
* right coordinate of rectangle.
* @param bottom
* bottom coordinate of rectangle.
* @param color
* Color value of pixel to find (in decimal or hex).
* @return The pixel's coordinates in a 2 element array, otherwise sets
* .error() to one.
*/
public long[] pixelSearch(int left, int top, int right, int bottom, int color) {
return pixelSearch(left, top, right, bottom, color, 0, 1);
}
/**
* Sends simulated keystrokes to the active window.
*
* @param keys
* The sequence of keys to send.
* @param isRaw
* Changes how "keys" is processed: true - Text contains special
* characters like + and ! to indicate SHIFT and ALT key presses.
* false, keys are sent raw.
*/
public void send(String keys, boolean isRaw) {
Variant vKeys = new Variant(keys);
Variant vFlag = new Variant(isRaw ? 1 : 0);
Variant[] params = new Variant[] { vKeys, vFlag };
autoItX.invoke("Send", params);
}
/**
* Sends simulated keystrokes to the active window.
*
* @param keys
* The sequence of keys to send.
*/
public void send(String keys) {
send(keys, true);
}
/**
* Creates a tooltip anywhere on the screen.
*
* @param text
* The text of the tooltip. (An empty string clears a displaying
* tooltip)
* @param x
* The x,y position of the tooltip.
* @param y
* The x,y position of the tooltip.
*/
public void toolTip(String text, int x, int y) {
Variant vText = new Variant(text);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant[] params = new Variant[] { vText, vX, vY };
autoItX.invoke("ToolTip", params);
}
/**
* Creates a tooltip anywhere on the screen.
*
* @param text
* The text of the tooltip. (An empty string clears a displaying
* tooltip)
*/
public void toolTip(String text) {
autoItX.invoke("ToolTip", text);
}
/**
* Disable/enable the mouse and keyboard. Requires admin rights in Vista and
* Windows 7.
*
* @param disableInput
* True = disable user input, false = re-enable it.
*/
public void blockInput(boolean disableInput) {
autoItX.invoke("BlockInput", (disableInput ? 1 : 0));
}
/**
* Opens or closes the CD tray.
*
* @param drive
* The drive letter of the CD tray to control, in the format D:,
* E:, etc.
* @param status
* Specifies if you want the CD tray to be open or closed: "open"
* or "closed"
* @return True if success, false if drive is locked via CD burning software
* or if the drive letter is not a CD drive.
*/
public boolean cdTray(String drive, String status) {
Variant vDrive = new Variant(drive);
Variant vStatus = new Variant(status);
Variant[] params = new Variant[] { vDrive, vStatus };
Variant result = autoItX.invoke("CDTray", params);
return oneToTrue(result);
}
/**
* Checks if the current user has administrator privileges.
*
* @return True if is admin, false otherwise.
*/
public boolean isAdmin() {
return oneToTrue(autoItX.invoke("IsAdmin"));
}
/**
* Changes the operation of various AutoIt functions/parameters.
*
* @param option
* The option to change.
* @param param
* The parameter (varies by option).
* @return Value of the previous setting.
*/
public String autoItSetOption(String option, String param) {
Variant vOption = new Variant(option);
Variant vParam = new Variant(param);
Variant[] params = new Variant[] { vOption, vParam };
Variant result = autoItX.invoke("AutoItSetOption", params);
if (result.getvt() == Variant.VariantInt) {
return String.valueOf(result.getInt());
}
return result.getString();
}
/**
* Changes the operation of various AutoIt functions/parameters.
*
* @param option
* The option to change.
* @param param
* The parameter (varies by option).
* @return Value of the previous setting.
*/
public String setOption(String option, String param) {
return autoItSetOption(option, param);
}
/**
* Perform a mouse click operation.
*
* @param button
* The button to click: "left", "right", "middle", "main",
* "menu", "primary", "secondary".
* @param x
* The x/y coordinates to move the mouse to. If no x and y coords
* are given, the current position is used.
* @param y
* The x/y coordinates to move the mouse to. If no x and y coords
* are given, the current position is used.
* @param clicks
* The number of times to click the mouse. Default is 1.
* @param speed
* The speed to move the mouse in the range 1 (fastest) to 100
* (slowest). A speed of 0 will move the mouse instantly. Default
* speed is 10.
*/
public void mouseClick(String button, int x, int y, int clicks, int speed) {
Variant vButton = new Variant(button);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant vClicks = new Variant(clicks);
Variant vSpeed = new Variant(speed);
Variant[] params = new Variant[] { vButton, vX, vY, vClicks, vSpeed };
autoItX.invoke("MouseClick", params);
}
/**
* Perform a mouse click operation.
*
* @param button
* The button to click: "left", "right", "middle", "main",
* "menu", "primary", "secondary".
* @param clicks
* The number of times to click the mouse. Default is 1.
* @param speed
* The speed to move the mouse in the range 1 (fastest) to 100
* (slowest). A speed of 0 will move the mouse instantly. Default
* speed is 10.
*/
public void mouseClick(String button, int clicks, int speed) {
Variant vButton = new Variant(button);
Variant vClicks = new Variant(clicks);
Variant vSpeed = new Variant(speed);
Variant[] params = new Variant[] { vButton, vClicks, vSpeed };
autoItX.invoke("MouseClick", params);
}
/**
* Perform a mouse click and drag operation.
*
* @param button
* The button to click: "left", "right", "middle", "main",
* "menu", "primary", "secondary".
* @param x
* The x/y coords to start the drag operation from.
* @param y
* The x/y coords to start the drag operation from.
* @param x2
* The x/y coords to start the drag operation to.
* @param y2
* The x/y coords to start the drag operation to.
* @param speed
* The speed to move the mouse in the range 1 (fastest) to 100
* (slowest). A speed of 0 will move the mouse instantly. Default
* speed is 10.
*/
public void mouseClickDrag(String button, int x, int y, int x2, int y2, int speed) {
Variant vButton = new Variant(button);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant vX2 = new Variant(x2);
Variant vY2 = new Variant(y2);
Variant vSpeed = new Variant(speed);
Variant[] params = new Variant[] { vButton, vX, vY, vX2, vY2, vSpeed };
autoItX.invoke("MouseClickDrag", params);
}
/**
* Perform a mouse click and drag operation.
*
* @param button
* The button to click: "left", "right", "middle", "main",
* "menu", "primary", "secondary".
* @param x
* The x/y coords to start the drag operation from.
* @param y
* The x/y coords to start the drag operation from.
* @param x2
* The x/y coords to start the drag operation to.
* @param y2
* The x/y coords to start the drag operation to.
*/
public void mouseClickDrag(String button, int x, int y, int x2, int y2) {
mouseClickDrag(button, x, y, x2, y2, 10);
}
/**
* Perform a mouse down event at the current mouse position.
*
* @param button
* The button to click: "left", "right", "middle", "main",
* "menu", "primary", "secondary".
*/
public void mouseDown(String button) {
autoItX.invoke("MouseDown", button);
}
/**
* Returns a cursor ID Number of the current Mouse Cursor.
*
* @return 0 = UNKNOWN (this includes pointing and grabbing hand icons)
*
* 1 = APPSTARTING
* 2 = ARROW
* 3 = CROSS
* 4 = HELP
* 5 = IBEAM
* 6 = ICON
* 7 = NO
* 8 = SIZE
* 9 = SIZEALL
* 10 = SIZENESW
* 11 = SIZENS
* 12 = SIZENWSE
* 13 = SIZEWE
* 14 = UPARROW
* 15 = WAIT
*/
public int mouseGetCursor() {
return autoItX.invoke("MouseGetCursor").getInt();
}
/**
* Retrieves the current X position of the mouse cursor.
*
* @return The current X position of the mouse cursor.
*/
public int mouseGetPosX() {
return autoItX.invoke("MouseGetPosX").getInt();
}
/**
* Retrieves the current Y position of the mouse cursor.
*
* @return The current Y position of the mouse cursor.
*/
public int mouseGetPosY() {
return autoItX.invoke("MouseGetPosY").getInt();
}
/**
* Moves the mouse pointer.
*
* @param x
* The screen x coordinate to move the mouse to.
* @param y
* The screen y coordinate to move the mouse to.
* @param speed
* The speed to move the mouse in the range 1 (fastest) to 100
* (slowest). A speed of 0 will move the mouse instantly. Default
* speed is 10.
* @return true if success, false otherwise (is this correct)?
*/
public boolean mouseMove(int x, int y, int speed) {
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant vSpeed = new Variant(speed);
Variant[] params = new Variant[] { vX, vY, vSpeed };
return oneToTrue(autoItX.invoke("MouseMove", params).getInt());
}
/**
* Moves the mouse pointer.
*
* @param x
* The screen x coordinate to move the mouse to.
* @param y
* The screen y coordinate to move the mouse to.
* @return true if success, false otherwise (is this correct)?
*/
public boolean mouseMove(int x, int y) {
return mouseMove(x, y, 10);
}
/**
* Perform a mouse up event at the current mouse position.
*
* @param button
* The button to click: "left", "right", "middle", "main",
* "menu", "primary", "secondary".
*/
public void mouseUp(String button) {
autoItX.invoke("MouseUp", button);
}
/**
* Moves the mouse wheel up or down. NT/2000/XP ONLY.
*
* @param direction
* "up" or "down"
* @param clicks
* The number of times to move the wheel. Default is 1.
*/
public void mouseWheel(String direction, int clicks) {
Variant vDirection = new Variant(direction);
Variant vClicks = new Variant(clicks);
Variant[] params = new Variant[] { vDirection, vClicks };
autoItX.invoke("MouseWheel", params);
}
/**
* Moves the mouse wheel up or down. NT/2000/XP ONLY.
*
* @param direction
* "up" or "down"
*/
public void mouseWheel(String direction) {
mouseWheel(direction, 1);
}
/**
* Terminates a named process.
*
* @param process
* The title or PID of the process to terminate.
*/
public void processClose(String process) {
autoItX.invoke("ProcessClose", process);
}
/**
* Checks to see if a specified process exists.
*
* @param process
* The name or PID of the process to check.
* @return The PID of the process. 0 if process does not exist.
*/
public int processExists(String process) {
return autoItX.invoke("ProcessExists", process).getInt();
}
/**
* Changes the priority of a process
*
* @param process
* The name or PID of the process to check.
* @param priority
* A flag which determines what priority to set
* 0 - Idle/Low
* 1 - Below Normal (Not supported on Windows 95/98/ME)
* 2 - Normal
* 3 - Above Normal (Not supported on Windows 95/98/ME)
* 4 - High
* 5 - Realtime (Use with caution, may make the system unstable)
* @return True if success, false otherwise.
*/
public boolean processSetPriority(String process, int priority) {
Variant vProcess = new Variant(process);
Variant vPriority = new Variant(priority);
Variant[] params = new Variant[] { vProcess, vPriority };
Variant result = autoItX.invoke("ProcessSetPriority", params);
return oneToTrue(result.getInt());
}
/**
* Pauses script execution until a given process exists.
*
* @param process
* The name of the process to check.
* @param timeout
* Specifies how long to wait (default is to wait indefinitely).
* @return True if success, false otherwise.
*/
public boolean processWait(String process, int timeout) {
Variant vProcess = new Variant(process);
Variant vTimeout = new Variant(timeout);
Variant[] params = new Variant[] { vProcess, vTimeout };
Variant result = autoItX.invoke("ProcessWait", params);
return oneToTrue(result.getInt());
}
/**
* Pauses script execution until a given process exists.
*
* @param process
* The name of the process to check.
* @return True if success, false otherwise.
*/
public boolean processWait(String process) {
Variant result = autoItX.invoke("ProcessWait", process);
return oneToTrue(result.getInt());
}
/**
* Pauses script execution until a given process exists.
*
* @param process
* The name of the process to check.
* @param timeout
* Specifies how long to wait (default is to wait indefinitely).
* @return True if success, false otherwise.
*/
public boolean processWaitClose(String process, int timeout) {
Variant vProcess = new Variant(process);
Variant vTimeout = new Variant(timeout);
Variant[] params = new Variant[] { vProcess, vTimeout };
Variant result = autoItX.invoke("ProcessWaitClose", params);
return oneToTrue(result.getInt());
}
/**
* Pauses script execution until a given process exists.
*
* @param process
* The name of the process to check.
* @return True if success, false otherwise.
*/
public boolean processWaitClose(String process) {
Variant result = autoItX.invoke("ProcessWaitClose", process);
return oneToTrue(result.getInt());
}
/**
* Runs an external program.
*
* @param filename
* The name of the executable (EXE, BAT, COM, or PIF) to run.
* @param workingDirectory
* The working directory.
* @param flag
* The "show" flag of the executed program:
* SW_HIDE = Hidden window
* SW_MINIMIZE = Minimized window
* SW_MAXIMIZE = Maximized window
* @return The PID of the process that was launched. After running the
* requested program the script continues. To pause execution of the
* script until the spawned program has finished use the RunWait
* function instead. The error property is set to 1 as an indication
* of failure.
*/
public int run(String filename, String workingDirectory, int flag) {
Variant vFilename = new Variant(filename);
Variant vWorkingDirectory = new Variant(workingDirectory);
Variant vFlag = new Variant(flag);
Variant[] params = new Variant[] { vFilename, vWorkingDirectory, vFlag };
return autoItX.invoke("Run", params).getInt();
}
/**
* Runs an external program.
*
* @param filename
* The name of the executable (EXE, BAT, COM, or PIF) to run.
* @param workingDirectory
* The working directory.
* @return The PID of the process that was launched. After running the
* requested program the script continues. To pause execution of the
* script until the spawned program has finished use the RunWait
* function instead. The error property is set to 1 as an indication
* of failure.
*/
public int run(String filename, String workingDirectory) {
Variant vFilename = new Variant(filename);
Variant vWorkingDirectory = new Variant(workingDirectory);
Variant[] params = new Variant[] { vFilename, vWorkingDirectory };
return autoItX.invoke("Run", params).getInt();
}
/**
* Runs an external program.
*
* @param filename
* The name of the executable (EXE, BAT, COM, or PIF) to run.
* @return The PID of the process that was launched. After running the
* requested program the script continues. To pause execution of the
* script until the spawned program has finished use the RunWait
* function instead. The error property is set to 1 as an indication
* of failure.
*/
public int run(String filename) {
return autoItX.invoke("Run", filename).getInt();
}
/**
* Initialize a set of user credentials to use during Run and RunWait
* operations. 2000/XP or later ONLY.
*
* @param username
* The user name to use.
* @param domain
* The domain name to use.
* @param password
* The password to use.
* @param options
* 0 = do not load the user profile, 1 = (default) load the user
* profile, 2 = use for net credentials only
* @return Returns 0 if the operating system does not support this function.
* Otherwise returns 1--regardless of success. (If the login
* information was invalid, subsequent Run/RunWait commands will
* fail....)
*/
public int runAsSet(String username, String domain, String password, int options) {
Variant vUsername = new Variant(username);
Variant vDomain = new Variant(domain);
Variant vPassword = new Variant(password);
Variant vOptions = new Variant(options);
Variant[] params = new Variant[] { vUsername, vDomain, vPassword, vOptions };
return autoItX.invoke("RunAsSet", params).getInt();
}
/**
* Initialize a set of user credentials to use during Run and RunWait
* operations. 2000/XP or later ONLY.
*
* @param username
* The user name to use.
* @param domain
* The domain name to use.
* @param password
* The password to use.
* @return Returns 0 if the operating system does not support this function.
* Otherwise returns 1--regardless of success. (If the login
* information was invalid, subsequent Run/RunWait commands will
* fail....)
*/
public int runAsSet(String username, String domain, String password) {
return runAsSet(username, domain, password, 1);
}
/**
* Runs an external program and pauses script execution until the program
* finishes.
*
* @param filename
* The name of the executable (EXE, BAT, COM, PIF) to run.
* @param workingDirectory
* The working directory.
* @param flag
* The "show" flag of the executed program:
* SW_HIDE = Hidden window
* SW_MINIMIZE = Minimized window
* SW_MAXIMIZE = Maximized window
* @return Returns the exit code of the program that was run. The error
* property is set to 1 as an indication of failure.
*/
public int runWait(String filename, String workingDirectory, int flag) {
Variant vFilename = new Variant(filename);
Variant vWorkingDirectory = new Variant(workingDirectory);
Variant vFlag = new Variant(flag);
Variant[] params = new Variant[] { vFilename, vWorkingDirectory, vFlag };
return autoItX.invoke("RunWait", params).getInt();
}
/**
* Runs an external program and pauses script execution until the program
* finishes.
*
* @param filename
* The name of the executable (EXE, BAT, COM, PIF) to run.
* @param workingDirectory
* The working directory.
* @return Returns the exit code of the program that was run. The error
* property is set to 1 as an indication of failure.
*/
public int runWait(String filename, String workingDirectory) {
Variant vFilename = new Variant(filename);
Variant vWorkingDirectory = new Variant(workingDirectory);
Variant[] params = new Variant[] { vFilename, vWorkingDirectory };
return autoItX.invoke("RunWait", params).getInt();
}
/**
* Runs an external program and pauses script execution until the program
* finishes.
*
* @param filename
* The name of the executable (EXE, BAT, COM, PIF) to run.
* @return Returns the exit code of the program that was run. The error
* property is set to 1 as an indication of failure.
*/
public int runWait(String filename) {
return autoItX.invoke("RunWait", filename).getInt();
}
/**
* Shuts down the system.
*
* @param code
* The shutdown code is a combination of the following values:
*
* 0 = Logoff
* 1 = Shutdown
* 2 = Reboot
* 4 = Force
* 8 = Power down Add the required values together. To shutdown
* and power down, for example, the code would be 9 (shutdown +
* power down = 1 + 8 = 9).
* @return True if success, false otherwise.
*/
public boolean shutdown(int code) {
return oneToTrue(autoItX.invoke("Shutdown", new Variant(code)).getInt());
}
/**
* Deletes a key from the registry.
*
* @param keyname
* The registry key to write to.
* @return Success: Returns 1. Special: Returns 0 if the key does not exist.
* Failure: Returns 2 if error deleting key.
*/
public int regDeleteKey(String keyname) {
return autoItX.invoke("RegDeleteKey", keyname).getInt();
}
/**
* Deletes a value from the registry.
*
* @param keyname
* The registry key to write to.
* @return Success: Returns 1. Special: Returns 0 if the key does not exist.
* Failure: Returns 2 if error deleting key.
*/
public int regDeleteVal(String keyname) {
return autoItX.invoke("RegDeleteVal", keyname).getInt();
}
/**
* Reads the name of a subkey according to it's instance.
*
* @param keyname
* The registry key to read.
* @param instance
* The 1-based key instance to retrieve.
* @return Success: Returns the requested subkey name. Otherwise Returns ""
* and sets the .error() flag, 1 if unable to open requested key, -1
* if unable to retrieve requested subkey (key instance out of
* range)
*/
public String regEnumKey(String keyname, int instance) {
Variant vKeyname = new Variant(keyname);
Variant vInstance = new Variant(instance);
Variant[] params = new Variant[] { vKeyname, vInstance };
return autoItX.invoke("RegEnumKey", params).getString();
}
/**
* Reads the name of a value according to it's instance.
*
* @param keyname
* The registry key to read.
* @param instance
* The 1-based key instance to retrieve.
* @return Success: Returns the requested subkey name. Otherwise Returns ""
* and sets the .error() flag, 1 if unable to open requested key, -1
* if unable to retrieve requested subkey (key instance out of
* range)
*/
public String regEnumVal(String keyname, int instance) {
Variant vKeyname = new Variant(keyname);
Variant vInstance = new Variant(instance);
Variant[] params = new Variant[] { vKeyname, vInstance };
return autoItX.invoke("RegEnumVal", params).getString();
}
/**
* Reads the name of a value according to it's instance.
*
* @param keyname
* The registry key to read.
* @param valueName
* The registry value to read.
* @return Success:Returns the requested registry value value. Otherwise
* Returns numeric 1 and sets the oAutoIt.error flag:
* 1 if unable to open requested key
* -1 if unable to open requested value
* -2 if value type not supported
*/
public String regRead(String keyname, String valueName) {
Variant vKeyname = new Variant(keyname);
Variant vValueName = new Variant(valueName);
Variant[] params = new Variant[] { vKeyname, vValueName };
Variant result = autoItX.invoke("RegRead", params);
if (result.getvt() == Variant.VariantInt) {
return String.valueOf(result.getInt());
}
if (result.getvt() == Variant.VariantString) {
return result.getString();
}
return "";
}
/**
* Creates a key or value in the registry.
*
* @param keyname
* The registry key to write to. If no other parameters are
* specified this key will simply be created.
* @param valueName
* The valuename to write to.
* @param type
* Type of key to write: "REG_SZ", "REG_MULTI_SZ",
* "REG_EXPAND_SZ", "REG_DWORD", or "REG_BINARY".
* @param value
* The value to write.
* @return True if success, false otherwise.
*/
public boolean regWrite(String keyname, String valueName, String type, String value) {
Variant vKeyname = new Variant(keyname);
Variant vValueName = new Variant(valueName);
Variant vType = new Variant(type);
Variant vValue = new Variant(value);
Variant[] params = new Variant[] { vKeyname, vValueName, vType, vValue };
Variant result = autoItX.invoke("RegWrite", params);
return oneToTrue(result.getInt());
}
/**
* Pause script execution.
*
* @param delay
* Amount of time to pause (in milliseconds).
*/
public void sleep(int delay) {
autoItX.invoke("sleep", delay);
}
/**
* Sends a mouse click command to a given control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @param button
* The button to click, "left", "right" or "middle". Default is
* the left button.
* @param clicks
* The number of times to click the mouse. Default is center.
* @param x
* The x position to click within the control. Default is center.
* @param y
* The y position to click within the control. Default is center.
* @return True if success, false otherwise.
*/
public boolean controlClick(String title, String text, String controlID, String button, int clicks, int x, int y) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControlID = new Variant(controlID);
Variant vButton = new Variant(button);
Variant vClicks = new Variant(clicks);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant[] params = new Variant[] { vTitle, vText, vControlID, vButton, vClicks, vX, vY };
Variant result = autoItX.invoke("ControlClick", params);
return oneToTrue(result.getInt());
}
/**
* Sends a mouse click command to a given control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @param button
* The button to click, "left", "right" or "middle". Default is
* the left button.
* @param clicks
* The number of times to click the mouse. Default is center.
* @return True if success, false otherwise.
*/
public boolean controlClick(String title, String text, String controlID, String button, int clicks) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControlID = new Variant(controlID);
Variant vButton = new Variant(button);
Variant vClicks = new Variant(clicks);
Variant[] params = new Variant[] { vTitle, vText, vControlID, vButton, vClicks };
Variant result = autoItX.invoke("ControlClick", params);
return oneToTrue(result.getInt());
}
/**
* Sends a mouse click command to a given control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @param button
* The button to click, "left", "right" or "middle". Default is
* the left button.
* @return True if success, false otherwise.
*/
public boolean controlClick(String title, String text, String controlID, String button) {
return controlClick(title, text, controlID, button, 1);
}
/**
* Sends a mouse click command to a given control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @return True if success, false otherwise.
*/
public boolean controlClick(String title, String text, String controlID) {
return controlClick(title, text, controlID, "left", 1);
}
private String controlCommandString(String title, String text, String control, String command, String option) {
Variant result = controlCommandVariant(title, text, control, command, option);
return result.getString();
}
private void controlCommandVoid(String title, String text, String control, String command, String option) {
controlCommandVariant(title, text, control, command, option);
}
private Variant controlCommandVariant(String title, String text, String control, String command, String option) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vCommand = new Variant(command);
Variant vOption = new Variant(option);
Variant[] params = new Variant[] { vTitle, vText, vControl, vCommand, vOption };
return autoItX.invoke("ControlCommand", params);
}
/**
* Drops a ComboBox
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlCommandShowDropdown(String title, String text, String control) {
controlCommandVoid(title, text, control, "ShowDropDown", "");
}
/**
* Undrops a ComboBox
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlCommandHideDropDown(String title, String text, String control) {
controlCommandVoid(title, text, control, "HideDropDown", "");
}
/**
* Checks radio or check Button
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlCommandCheck(String title, String text, String control) {
controlCommandVoid(title, text, control, "Check", "");
}
/**
* Un-checks radio or check Button
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlCommandUncheck(String title, String text, String control) {
controlCommandVoid(title, text, control, "UnCheck", "");
}
/**
* Adds a string to the end in a ListBox or ComboBox
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* The string.
*/
public void controlCommandAddString(String title, String text, String control, String string) {
controlCommandVoid(title, text, control, "AddString", string);
}
/**
* Deletes a string according to occurrence in a ListBox or ComboBox.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param occurrance
* The occurrance.
*/
public void controlCommandDeleteString(String title, String text, String control, String occurrance) {
controlCommandVoid(title, text, control, "DelString", occurrance);
}
/**
* Pastes the 'string' at the Edits caret position.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* The string.
*/
public void controlCommandEditPaste(String title, String text, String control, String string) {
controlCommandVoid(title, text, control, "EditPaste", string);
}
/**
* Sets selection to occurrence ref in a ListBox or ComboBox.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param occurrance
*/
public void controlCommandSetCurrentSelection(String title, String text, String control, String occurrance) {
controlCommandVoid(title, text, control, "SetCurrentSelection", occurrance);
}
/**
* Sets selection according to string in a ListBox or ComboBox
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* The string.
*/
public void controlCommandSelectString(String title, String text, String control, String string) {
controlCommandVoid(title, text, control, "SelectString", string);
}
private boolean controlCommandBoolean(String title, String text, String control, String command, String option) {
return oneToTrue(controlCommandInts(title, text, control, command, option));
}
/**
* Checks whether a control is visible.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return True if is visible.
*/
public boolean controlCommandIsVisible(String title, String text, String control) {
return controlCommandBoolean(title, text, control, "IsVisible", "");
}
/**
* Checks whether a control is checked.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return True if is checked.
*/
public boolean controlCommandIsChecked(String title, String text, String control) {
return controlCommandBoolean(title, text, control, "IsChecked", "");
}
/**
* Checks whether a control is enabled.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return True if is enabled.
*/
public boolean controlCommandIsEnabled(String title, String text, String control) {
return controlCommandBoolean(title, text, control, "IsEnabled", "");
}
/**
* Returns occurrence ref of the exact string in a ListBox or ComboBox.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* The string.
* @return Returns occurrence ref of the exact string in a ListBox or
* ComboBox.
*/
public int controlCommandFindString(String title, String text, String control, String string) {
return controlCommandInts(title, text, control, "FindString", string);
}
private int controlCommandInts(String title, String text, String control, String command, String option) {
Variant result = controlCommandVariant(title, text, control, command, option);
return result.getvt() == Variant.VariantString ? Integer.parseInt(result.getString()) : 0;
}
/**
* Returns the line # where the caret is in an Edit
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the line # where the caret is in an Edit
*/
public int controlCommandGetCurrentLine(String title, String text, String control) {
return controlCommandInts(title, text, control, "GetCurrentLine", "");
}
/**
* Returns the column # where the caret is in an Edit
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the line # where the caret is in an Edit
*/
public int controlCommandGetCurrentCol(String title, String text, String control) {
return controlCommandInts(title, text, control, "GetCurrentCol", "");
}
/**
* Returns the column # where the caret is in an Edit
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the line # where the caret is in an Edit
*/
public int controlCommandGetLineCount(String title, String text, String control) {
return controlCommandInts(title, text, control, "GetLineCount", "");
}
/**
* Sets selection according to string in a ListBox or ComboBox
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param charLength
* The char size.
* @return The current selection.
*/
public String controlCommandGetCurrentSelection(String title, String text, String control, int charLength) {
return controlCommandString(title, text, control, "GetCurrentSelection", "");
}
/**
* Returns selected text of an Edit.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param charLength
* The length to get.
* @return The selected text.
*/
public String controlCommandGetSelected(String title, String text, String control, int charLength) {
return controlCommandString(title, text, control, "GetSelected", "");
}
/**
* Moves to the next tab to the right of a SysTabControl32
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlCommandTabLeft(String title, String text, String control) {
controlCommandVoid(title, text, control, "TabLeft", "");
}
/**
* Moves to the next tab to the right of a SysTabControl32
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlCommandTabRight(String title, String text, String control) {
controlCommandVoid(title, text, control, "TabRight", "");
}
/**
* Returns the current Tab shown of a SysTabControl32.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the current Tab shown of a SysTabControl32
*/
public String controlCommandCurrentTab(String title, String text, String control) {
return controlCommandString(title, text, control, "CurrentTab", "");
}
/**
* Disables or "grays-out" a control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return True if success, false otherwise.
*/
public boolean controlDisable(String title, String text, String control) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant[] params = new Variant[] { vTitle, vText, vControl };
Variant result = autoItX.invoke("ControlDisable", params);
return oneToTrue(result.getInt());
}
/**
* Enables a "grayed-out" control.
* Use with caution.
* When using a control name in the Control functions, you need to add a
* number to the end of the name to indicate which control. For example, if
* there two controls listed called "MDIClient", you would refer to these as
* "MDIClient1" and "MDIClient2".
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return True if success, false otherwise.
*/
public boolean controlEnable(String title, String text, String control) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant[] params = new Variant[] { vTitle, vText, vControl };
Variant result = autoItX.invoke("ControlEnable", params);
return oneToTrue(result.getInt());
}
/**
* Sets input focus to a given control on a window.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return True if success, false otherwise.
*/
public boolean controlFocus(String title, String text, String control) {
return controlBool(title, text, control, "ControlFocus");
}
/**
* Returns the ControlRef# of the control that has keyboard focus within a
* specified window.
*
* @param title
* Title of window to check.
* @param text
* Text from window to check.
* @return ControlRef# of the control that has keyboard focus within a
* specified window. Otherwise returns a blank string and sets
* .error() to 1 if window is not found.
*/
public String controlGetFocus(String title, String text) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant[] params = new Variant[] { vTitle, vText };
return autoItX.invoke("ControlGetFocus", params).getString();
}
/**
* Returns the ControlRef# of the control that has keyboard focus within a
* specified window.
*
* @param title
* Title of window to check.
* @return ControlRef# of the control that has keyboard focus within a
* specified window. Otherwise returns a blank string and sets
* .error() to 1 if window is not found.
*/
public String controlGetFocus(String title) {
return autoItX.invoke("ControlGetFocus", title).getString();
}
/**
* Retrieves the internal handle of a control.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @param controlID
* The control to interact with.
* @return Returns a string containing the control handle value. Otherwise
* returns "" (blank string) and sets oAutoIt.error to 1 if no
* window matches the criteria.
*/
public String controlGetHandle(String title, String text, String controlID) {
return controlString(title, text, controlID, "ControlGetHandle");
}
/**
* Retrieves the position and size of a control relative to it's window.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @return The X coordinate of the control.
*/
public int controlGetPosX(String title, String text, String controlID) {
return controlInt(title, text, controlID, "ControlGetPosX");
}
/**
* Retrieves the position and size of a control relative to it's window.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @return The Y coordinate of the control.
*/
public int controlGetPosY(String title, String text, String controlID) {
return controlInt(title, text, controlID, "ControlGetPosY");
}
/**
* Retrieves the position and size of a control relative to it's window.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @return The width of the control. Otherwise sets .error() to 1.
*/
public int controlGetPosWidth(String title, String text, String controlID) {
return controlInt(title, text, controlID, "ControlGetPosWidth");
}
/**
* Retrieves the position and size of a control relative to it's window.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @return Returns the height of the control. Otherwise returns the Y
* coordinate of the control.
*/
public int controlGetPosHeight(String title, String text, String controlID) {
return controlInt(title, text, controlID, "ControlGetPosHeight");
}
/**
* Retrieves text from a control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @return Text from a control. If fails, sets .error() to 1 and returns a
* blank string of "".
*/
public String controlGetText(String title, String text, String controlID) {
return controlString(title, text, controlID, "ControlGetText");
}
/**
* Hides a control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param controlID
* The control to interact with.
* @return True if success, false otherwise.
*/
public boolean controlHide(String title, String text, String controlID) {
return controlBool(title, text, controlID, "ControlHide");
}
/**
* Returns the item index of the string. Returns -1 if the string is not
* found.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* String to find
* @param subitem
* The SubItem
* @return Returns the item index of the string. Returns -1 if the string is
* not found.
*/
public int controlListViewFindItem(String title, String text, String control, String string, String subitem) {
return controlListViewInt(title, text, control, "FindItem", string, subitem);
}
private int controlListViewInt(String title, String text, String control, String command, String option,
String option2) {
return controlView(title, text, control, command, option, option2, "ControlListView").getInt();
}
private String controlListViewString(String title, String text, String control, String command, String option,
String option2) {
return controlView(title, text, control, command, option, option2, "ControlListView").getString();
}
private Variant controlView(String title, String text, String control, String command, String option,
String option2, String function) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vCommand = new Variant(command);
Variant vOption = new Variant(option);
Variant vOption2 = new Variant(option2);
Variant[] params = new Variant[] { vTitle, vText, vControl, vCommand, vOption, vOption2 };
return autoItX.invoke(function, params);
}
/**
* Returns the number of list items.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the number of list items.
*/
public int controlListViewGetItemCount(String title, String text, String control) {
return controlListViewInt(title, text, control, "GetItemCount", "", "");
}
/**
* Returns the number of items that are selected.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the number of items that are selected.
*/
public int controlListViewGetSelectedCount(String title, String text, String control) {
return controlListViewInt(title, text, control, "GetSelectedCount", "", "");
}
/**
* Returns the number of subitems.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the number of subitems.
*/
public int controlListViewGetSubItemCount(String title, String text, String control) {
return controlListViewInt(title, text, control, "GetSubItemCount", "", "");
}
/**
* Returns the text of a given item/subitem.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The text of an item.
* @param subitem
* The text of a subitem.
* @return Returns the text of a given item/subitem.
*/
public String controlListViewGetText(String title, String text, String control, String item, String subitem) {
return controlListViewString(title, text, control, "GetText", item, subitem);
}
/**
* Returns 1 if the item is selected, otherwise returns 0. Returns the text
* of a given item/subitem.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The text of an item.
* @return Returns 1 if the item is selected, otherwise returns 0.
*/
public boolean controlListViewIsSelected(String title, String text, String control, String item) {
return oneToTrue(controlListViewInt(title, text, control, "IsSelected", item, ""));
}
/**
* Returns a string containing the item index of selected items. If option=0
* (default) only the first selected item is returned. If option=1 then all
* the selected items are returned delimited by |, e.g: "0|3|4|10". If no
* items are selected a blank "" string is returned.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns a string containing the item index of selected items. If
* option=0 (default) only the first selected item is returned. If
* option=1 then all the selected items are returned delimited by |,
* e.g: "0|3|4|10". If no items are selected a blank "" string is
* returned.
*/
public String controlListViewGetSelected(String title, String text, String control) {
return controlListViewString(title, text, control, "GetSelected", "", "");
}
/**
* Returns a string containing the item index of selected items. If option=0
* (default) only the first selected item is returned. If option=1 then all
* the selected items are returned delimited by |, e.g: "0|3|4|10". If no
* items are selected a blank "" string is returned. If no items are
* selected a blank "" string is returned.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns a string containing the item index of selected items. If
* option=0 (default) only the first selected item is returned. If
* option=1 then all the selected items are returned delimited by |,
* e.g: "0|3|4|10". If no items are selected a blank "" string is
* returned.
*/
public String[] controlListViewGetSelectedArray(String title, String text, String control) {
SafeArray safeArr = controlView(title, text, control, "GetSelected", "", "", "ControlListView").toSafeArray();
return safeArr.toStringArray();
}
/**
* Selects one or more items.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param from
* The start index.
* @param to
* The to index.
*/
public void controlListViewSelect(String title, String text, String control, String from, String to) {
controlView(title, text, control, "Select", from, to, "ControlListView");
}
/**
* Selects all items.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param from
* The start index.
* @param to
* The end index.
*/
public void controlListViewSelectAll(String title, String text, String control, String from, String to) {
controlView(title, text, control, "SelectAll", from, to, "ControlListView");
}
/**
* Selects all items.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param from
* The start index.
*/
public void controlListViewSelectAll(String title, String text, String control, String from) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vCommand = new Variant("SelectAll");
Variant vFrom = new Variant(from);
Variant[] params = new Variant[] { vTitle, vText, vControl, vCommand, vFrom };
autoItX.invoke("ControlListView", params);
}
/**
* Clears the selection of all items.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlListViewSelectClear(String title, String text, String control) {
controlView(title, text, control, "SelectClear", "", "", "ControlListView");
}
/**
* Inverts the current selection.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
*/
public void controlListViewSelectInvert(String title, String text, String control) {
controlView(title, text, control, "SelectInvert", "", "", "ControlListView");
}
/**
* Changes the current view. Valid views are "list", "details",
* "smallicons", "largeicons".
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param view
* Valid views are "list", "details", "smallicons", "largeicons".
*/
public void controlListViewSelectViewChange(String title, String text, String control, String view) {
controlView(title, text, control, "ViewChnage", view, "", "ControlListView");
}
protected Variant controlVariant(String title, String text, String control, String function) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant[] params = new Variant[] { vTitle, vText, vControl };
return autoItX.invoke(function, params);
}
protected boolean controlBool(String title, String text, String control, String function) {
Variant result = controlVariant(title, text, control, function);
return oneToTrue(result.getInt());
}
protected int controlInt(String title, String text, String control, String function) {
Variant result = controlVariant(title, text, control, function);
return result.getInt();
}
protected String controlString(String title, String text, String control, String function) {
Variant result = controlVariant(title, text, control, function);
if (result.getvt() == Variant.VariantString) {
return result.getString();
}
if (result.getvt() == Variant.VariantInt) {
return String.valueOf(result.getInt());
}
return "";
}
/**
* Moves a control within a window.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param x
* X coordinate to move to.
* @param y
* Y coordinate to move to.
* @param width
* New width of the window.
* @param height
* New height of the window.
* @return True if success, false otherwise
*/
public boolean controlMove(String title, String text, String control, int x, int y, int width, int height) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant vWidth = new Variant(width);
Variant vHeight = new Variant(height);
Variant[] params = new Variant[] { vTitle, vText, vControl, vX, vY, vWidth, vHeight };
Variant result = autoItX.invoke("ControlMove", params);
return oneToTrue(result.getInt());
}
/**
* Moves a control within a window.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param x
* X coordinate to move to.
* @param y
* Y coordinate to move to.
* @return True if success, false otherwise
*/
public boolean controlMove(String title, String text, String control, int x, int y) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant[] params = new Variant[] { vTitle, vText, vControl, vX, vY };
Variant result = autoItX.invoke("ControlMove", params);
return oneToTrue(result.getInt());
}
/**
* Sends a string of characters to a control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* String of characters to send to the control.
* @param sendRawKeys
* If true, text contains special characters like + to indicate
* SHIFT and {LEFT} to indicate left arrow. If false, text is
* sent raw.
* @return True if success, false otherwise
*/
public boolean controlSend(String title, String text, String control, String string, boolean sendRawKeys) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vString = new Variant(string);
int flag = (sendRawKeys) ? 1 : 0;
Variant vFlag = new Variant(flag);
Variant[] params = new Variant[] { vTitle, vText, vControl, vString, vFlag };
Variant result = autoItX.invoke("ControlSend", params);
return oneToTrue(result.getInt());
}
/**
* Sends a string of characters to a control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* String of characters to send to the control.
* @return True if success, false otherwise
*/
public boolean controlSend(String title, String text, String control, String string) {
return controlSend(title, text, control, string, false);
}
/**
* Sets text of a control. Sends a string of characters to a control.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param string
* The new text to be set into the control.
* @return True if success, false otherwise
*/
public boolean ControlSetText(String title, String text, String control, String string) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vString = new Variant(string);
Variant[] params = new Variant[] { vTitle, vText, vControl, vString };
Variant result = autoItX.invoke("ControlSetText", params);
return oneToTrue(result.getInt());
}
/**
* Shows a control that was hidden.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return True if success, false otherwise.
*/
public boolean controlShow(String title, String text, String control) {
return controlBool(title, text, control, "ControlShow");
}
private String controlTreeViewString(String title, String text, String control, String command, String option,
String option2) {
return controlView(title, text, control, command, option, option2, "ControlTreeView").getString();
}
private int controlTreeViewInt(String title, String text, String control, String command, String option,
String option2) {
return controlView(title, text, control, command, option, option2, "ControlTreeView").getInt();
}
public boolean controlTreeViewBoolean(String title, String text, String control, String command, String option,
String option2) {
Variant result = controlView(title, text, control, command, option, option2, "ControlTreeView");
return oneToTrue(result.getInt());
}
/**
* Checks an item (if the item supports it).
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to check
*/
public void controlTreeViewCheck(String title, String text, String control, String item) {
controlView(title, text, control, "Check", item, "", "ControlTreeView");
}
/**
* Collapses an item to hide its children.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to check
*/
public void controlTreeViewCollapse(String title, String text, String control, String item) {
controlView(title, text, control, "Collapse", item, "", "ControlTreeView");
}
/**
* Checks if an item exists
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to check
* @return True if the tree view exists.
*/
public Boolean controlTreeViewExists(String title, String text, String control, String item) {
return controlTreeViewBoolean(title, text, control, "Exists", item, "");
}
/**
* Expands an item to show its children.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to expand
*/
public void controlTreeViewExpand(String title, String text, String control, String item) {
controlView(title, text, control, "Expand", item, "", "ControlTreeView");
}
/**
* Returns the number of children for a selected item.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to check
* @return The number of children for a selected item.
*/
public int controlTreeViewGetItemCount(String title, String text, String control, String item) {
return controlTreeViewInt(title, text, control, "GetItemCount", item, "");
}
/**
* Returns the item reference of the current selection using the index
* reference of the item.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return The item reference of the current selection using the index
* reference of the item.
*/
public int controlTreeViewGetSelectedItemIndex(String title, String text, String control) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vCommand = new Variant("GetSelected");
Variant vIndex = new Variant(1);
Variant[] params = new Variant[] { vTitle, vText, vControl, vCommand, vIndex };
return autoItX.invoke("ControlTreeView", params).getInt();
}
/**
* Returns the item reference of the current selection using the text
* reference of the item.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return The item reference of the current selection using the text
* reference of the item.
*/
public String controlTreeViewGetSelectedItemText(String title, String text, String control) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vControl = new Variant(control);
Variant vCommand = new Variant("GetSelected");
Variant vIndex = new Variant(0);
Variant[] params = new Variant[] { vTitle, vText, vControl, vCommand, vIndex };
return autoItX.invoke("ControlTreeView", params).getString();
}
/**
* GetText
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to get
* @return The the text of an item.
*/
public String controlTreeViewGetText(String title, String text, String control, String item) {
return controlTreeViewString(title, text, control, "GetText", item, "");
}
/**
* Returns the state of an item. 1:checked, 0:unchecked, -1:not a checkbox.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @return Returns the state of an item. 1:checked, 0:unchecked, -1:not a
* checkbox.
*/
public int controlTreeViewIsChecked(String title, String text, String control) {
return controlView(title, text, control, "IsChecked", "", "", "ControlTreeView").getInt();
}
/**
* Selects an item.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to select
*/
public void controlTreeViewSelect(String title, String text, String control, String item) {
controlView(title, text, control, "Select", item, "", "ControlTreeView");
}
/**
* Uncheck an item.
*
* @param title
* The title of the window to access.
* @param text
* The text of the window to access.
* @param control
* The control to interact with.
* @param item
* The item to select
*/
public void controlTreeViewUncheck(String title, String text, String control, String item) {
controlView(title, text, control, "Uncheck", item, "", "ControlTreeView");
}
/**
* Retrieves the text from a standard status bar control.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @param part
* The "part" number of the status bar to read the default is 1.
* 1 is the first possible part and usually the one that contains
* the useful messages like "Ready" "Loading...", etc.
* @return The text from a standard status bar control.
*/
public String statusbarGetText(String title, String text, int part) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vPart = new Variant(part);
Variant[] params = new Variant[] { vTitle, vText, vPart };
return autoItX.invoke("StatusbarGetText", params).getString();
}
/**
* Retrieves the text from a standard status bar control.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @return The text from a standard status bar control.
*/
public String StatusbarGetText(String title, String text) {
return winVariant(title, text, "StatusbarGetText").getString();
}
private Variant winVariant(String title, String text, String function) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant[] params = new Variant[] { vTitle, vText };
return autoItX.invoke(function, params);
}
private Variant winVariant(String title, String function) {
Variant vTitle = new Variant(title);
Variant[] params = new Variant[] { vTitle };
return autoItX.invoke(function, params);
}
/**
* Activates (gives focus to) a window.
*
* @param title
* The title of the window to activate.
* @param text
* The text of the window to activate.
*/
public void winActivate(String title, String text) {
winVariant(title, text, "WinActivate");
}
/**
* Activates (gives focus to) a window.
*
* @param title
* The title of the window to activate.
*/
public void winActivate(String title) {
winVariant(title, "WinActivate");
}
/**
* Checks to see if a specified window exists and is currently active.
*
* @param title
* The title of the window to activate.
* @param text
* The text of the window to activate.
*/
public void winActive(String title, String text) {
winVariant(title, text, "WinActive");
}
/**
* Checks to see if a specified window exists and is currently active.
*
* @param title
* The title of the window to activate.
*/
public void winActive(String title) {
winVariant(title, "WinActive");
}
/**
* Closes a window.
*
* @param title
* The title of the window to activate.
* @param text
* The text of the window to activate.
*/
public void winClose(String title, String text) {
winVariant(title, text, "WinClose");
}
/**
* Closes a window.
*
* @param title
* The title of the window to activate.
*/
public void winClose(String title) {
winVariant(title, "WinClose");
}
/**
* Checks to see if a specified window exists.
*
* @param title
* The title of the window to activate.
* @param text
* The text of the window to activate.
* @return True if window exists, false otherwise.
*/
public boolean winExists(String title, String text) {
Variant result = winVariant(title, text, "WinExists");
return oneToTrue(result.getInt());
}
/**
* Checks to see if a specified window exists.
*
* @param title
* The title of the window to activate.
* @return True if window exists, false otherwise.
*/
public boolean winExists(String title) {
Variant result = winVariant(title, "WinExists");
return oneToTrue(result.getInt());
}
/**
* Returns the coordinates of the caret in the foreground window
*
* @return The coordinates of the caret in the foreground window
*/
public int winGetCaretPosX() {
return autoItX.invoke("WinGetCaretPosX").getInt();
}
/**
* Returns the coordinates of the caret in the foreground window
*
* @return The coordinates of the caret in the foreground window
*/
public int winGetCaretPosY() {
return autoItX.invoke("WinGetCaretPosY").getInt();
}
/**
* Retrieves the classes from a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return A string containing the window classes read, otherwise returns
* empty string and sets .error() to 1.
*/
public String winGetClassList(String title, String text) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant[] params = new Variant[] { vTitle, vText };
Variant result = autoItX.invoke("WinGetClassList", params);
return safeString(result);
}
/**
* Retrieves the size of a given window's client area.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns the width of the window's client area, else returns 1 and
* sets .error() =1;
*/
public int winGetClientSizeWidth(String title, String text) {
Variant result = winVariant(title, text, "WinGetClientSizeWidth");
return result.getInt();
}
/**
* Retrieves the size of a given window's client area.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns the height of the window's client area, else returns 1
* and sets .error() =1;
*/
public int winGetClientSizeHeight(String title, String text) {
Variant result = winVariant(title, text, "WinGetClientSizeHeight");
return result.getInt();
}
/**
* Retrieves the size of a given window's client area.
*
* @param title
* The title of the window to read.
* @return Returns the width of the window's client area, else returns 1 and
* sets .error() =1;
*/
public int winGetClientSizeWidth(String title) {
Variant result = winVariant(title, "WinGetClientSizeWidth");
return result.getInt();
}
/**
* Retrieves the size of a given window's client area.
*
* @param title
* The title of the window to read.
* @return Returns the height of the window's client area, else returns 1
* and sets .error() =1;
*/
public int winGetClientSizeHeight(String title) {
Variant result = winVariant(title, "WinGetClientSizeHeight");
return result.getInt();
}
private String safeString(Variant v) {
return v.getvt() == Variant.VariantString ? v.getString() : "";
}
/**
* Retrieves the internal handle of a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return A string containing the window handle value. Otherwise returns ""
* and sets .error() to 1.
*/
public String winGetHandle(String title, String text) {
Variant result = winVariant(title, text, "WinGetHandle");
return result.getString();
}
/**
* Retrieves the internal handle of a window.
*
* @param title
* The title of the window to read.
* @return A string containing the window handle value. Otherwise returns ""
* and sets .error() to 1.
*/
public String winGetHandle(String title) {
Variant result = winVariant(title, "WinGetHandle");
return result.getString();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns the X coordinate of the window. Otherwise returns 1 and
* sets .error() = 1
*/
public int winGetPosX(String title, String text) {
return winVariant(title, text, "WinGetPosX").getInt();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @return Returns the X coordinate of the window. Otherwise returns 1 and
* sets .error() = 1
*/
public int winGetPosX(String title) {
return winVariant(title, "WinGetPosX").getInt();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns the Y coordinate of the window. Otherwise returns 1 and
* sets .error() = 1
*/
public int winGetPosY(String title, String text) {
Variant result = winVariant(title, text, "WinGetPosY");
return result.getInt();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @return Returns the Y coordinate of the window. Otherwise returns 1 and
* sets .error() = 1
*/
public int winGetPosY(String title) {
Variant result = winVariant(title, "WinGetPosY");
return result.getInt();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns the width of the window. Otherwise returns 1 and sets
* error() = 1
*/
public int winGetPosWidth(String title, String text) {
Variant result = winVariant(title, text, "WinGetPosWidth");
return result.getInt();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @return Returns the width of the window. Otherwise returns 1 and sets
* error() = 1
*/
public int winGetPosWidth(String title) {
Variant result = winVariant(title, "WinGetPosWidth");
return result.getInt();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns the height of the window. Otherwise returns 1 and sets
* error() = 1
*/
public int winGetPosHeight(String title, String text) {
Variant result = winVariant(title, text, "WinGetPosHeight");
return result.getInt();
}
/**
* Retrieves the position and size of a given window.
*
* @param title
* The title of the window to read.
* @return Returns the height of the window. Otherwise returns 1 and sets
* error() = 1
*/
public int winGetPosHeight(String title) {
Variant result = winVariant(title, "WinGetPosHeight");
return result.getInt();
}
/**
* Retrieves the Process ID (PID) associated with a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return The PID, otherwise returns "".
*/
public String winGetProcess(String title, String text) {
Variant v = winVariant(title, text, "WinGetProcess");
return v.getString();
}
/**
* Retrieves the Process ID (PID) associated with a window.
*
* @param title
* The title of the window to read.
* @return The PID, otherwise returns "".
*/
public String winGetProcess(String title) {
Variant v = winVariant(title, "WinGetProcess");
return v.getString();
}
/**
* Retrieves the state of a given window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns a value indicating the state of the window. Multiple
* values are added together so use BitAND() to examine the part you
* are interested in:
* 1 = Window exists
* 2 = Window is visible
* 4 = Windows is enabled
* 8 = Window is active
* 16 = Window is minimized
* otherwise returns 0 and sets oAutoIt.error to 1 if the window is
* not found.
*/
public int winGetState(String title, String text) {
Variant result = winVariant(title, text, "WinGetState");
return result.getInt();
}
/**
* Retrieves the state of a given window.
*
* @param title
* The title of the window to read.
* @return Returns a value indicating the state of the window. Multiple
* values are added together so use BitAND() to examine the part you
* are interested in:
* 1 = Window exists
* 2 = Window is visible
* 4 = Windows is enabled
* 8 = Window is active
* 16 = Window is minimized
* otherwise returns 0 and sets oAutoIt.error to 1 if the window is
* not found.
*/
public int winGetState(String title) {
Variant result = winVariant(title, "WinGetState");
return result.getInt();
}
/**
* Retrieves up to 64KB of text from a window.
*
* WinGetText works on minimized windows, but only works on hidden windows
* if you've set AutoItSetOption("WinDetectHiddenText", 1) If multiple
* windows match the criteria for WinGetText, the information for the most
* recently active match is returned. Use WinGetText("") to get the active
* window's text.
*
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return Returns a string containing up to 64k of the window text read.
*/
public String winGetText(String title, String text) {
Variant result = winVariant(title, text, "WinGetText");
return result.getString();
}
/**
* Retrieves up to 64KB of text from a window.
*
* WinGetText works on minimized windows, but only works on hidden windows
* if you've set AutoItSetOption("WinDetectHiddenText", 1) If multiple
* windows match the criteria for WinGetText, the information for the most
* recently active match is returned. Use WinGetText("") to get the active
* window's text.
*
*
* @param title
* The title of the window to read.
* @return Returns a string containing up to 64k of the window text read.
*/
public String winGetText(String title) {
Variant result = winVariant(title, "WinGetText");
return result.getString();
}
/**
* Retrieves the full title from a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @return A string containing the complete window title. Otherwise "".
*/
public String winGetTitle(String title, String text) {
Variant result = winVariant(title, text, "WinGetTitle");
if (result.getvt() == Variant.VariantString) {
return result.getString();
}
return "";
}
/**
* Retrieves the full title from a window.
*
* @param title
* The title of the window to read.
* @return A string containing the complete window title. Otherwise "".
*/
public String winGetTitle(String title) {
Variant result = winVariant(title, "WinGetTitle");
if (result.getvt() == Variant.VariantString) {
return result.getString();
}
return "";
}
/**
* Forces a window to close.
*
* @param title
* The title of the window.
* @param text
* The text of the window.
*/
public void winKill(String title, String text) {
winVariant(title, text, "WinKill");
}
/**
* Forces a window to close.
*
* @param title
* The title of the window.
*/
public void winKill(String title) {
winVariant(title, "WinKill");
}
/**
* Retrieves a list of windows.
*
* @param title
* The title of the window.
* @param text
* The text of the window.
* @return Returns a 2 dimensional array containing the window titles and
* corresponding handles.
*/
public String[][] winList(String title, String text) {
Variant result = winVariant(title, text, "WinList");
SafeArray arr = result.toSafeArray();
int entries = arr.getInt(0, 0);
String[][] resultArr = new String[2][entries + 1];
for (int i = 0; i <= entries; i++) {
resultArr[0][i] = arr.getString(0, i);
resultArr[1][i] = arr.getString(1, i);
}
return resultArr;
}
/**
* Retrieves a list of windows.
*
* @param title
* The title of the window.
* @return Returns a 2 dimensional array containing the window titles and
* corresponding handles.
*/
public String[][] winList(String title) {
Variant result = winVariant(title, "WinList");
SafeArray arr = result.toSafeArray();
int entries = arr.getInt(0, 0);
String[][] resultArr = new String[2][entries + 1];
for (int i = 0; i <= entries; i++) {
resultArr[0][i] = arr.getString(0, i);
resultArr[1][i] = arr.getString(1, i);
}
return resultArr;
}
/**
* Invokes a menu item of a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @param item
* Text of Menu Item
* @return True if success, false otherwise.
*/
public boolean winMenuSelectItem(String title, String text, String item) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vItem = new Variant(item);
Variant[] params = new Variant[] { vTitle, vText, vItem };
Variant result = autoItX.invoke("WinMenuSelectItem", params);
return oneToTrue(result.getInt());
}
/**
* Invokes a menu item of a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @param item
* Text of Menu Item
* @param item2
* Text of Menu Item
* @return True if success, false otherwise.
*/
public boolean winMenuSelectItem(String title, String text, String item, String item2) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vItem = new Variant(item);
Variant vItem2 = new Variant(item2);
Variant[] params = new Variant[] { vTitle, vText, vItem, vItem2 };
Variant result = autoItX.invoke("WinMenuSelectItem", params);
return oneToTrue(result.getInt());
}
/**
* Invokes a menu item of a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @param item
* Text of Menu Item
* @param item2
* Text of Menu Item
* @param item3
* Text of Menu Item
* @return True if success, false otherwise.
*/
public boolean winMenuSelectItem(String title, String text, String item, String item2, String item3) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vItem = new Variant(item);
Variant vItem2 = new Variant(item2);
Variant vItem3 = new Variant(item3);
Variant[] params = new Variant[] { vTitle, vText, vItem, vItem2, vItem3 };
Variant result = autoItX.invoke("WinMenuSelectItem", params);
return oneToTrue(result.getInt());
}
/**
* Invokes a menu item of a window.
*
* @param title
* The title of the window to read.
* @param text
* The text of the window to read.
* @param item
* Text of Menu Item
* @param item2
* Text of Menu Item
* @param item3
* Text of Menu Item
* @param item4
* Text of Menu Item
* @param item5
* Text of Menu Item
* @param item6
* Text of Menu Item
* @param item7
* Text of Menu Item
* @return True if success, false otherwise.
*/
public boolean winMenuSelectItem(String title, String text, String item, String item2, String item3, String item4,
String item5, String item6, String item7) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vItem = new Variant(item);
Variant vItem2 = new Variant(item2);
Variant vItem3 = new Variant(item3);
Variant vItem4 = new Variant(item4);
Variant vItem5 = new Variant(item5);
Variant vItem6 = new Variant(item6);
Variant vItem7 = new Variant(item7);
Variant[] params = new Variant[] { vTitle, vText, vItem, vItem2, vItem3, vItem4, vItem5, vItem6, vItem7 };
Variant result = autoItX.invoke("WinMenuSelectItem", params);
return oneToTrue(result.getInt());
}
/**
* Minimizes all windows.
*/
public void winMinimizeAll() {
autoItX.invoke("WinMinimizeAll");
}
/**
* Undoes a previous WinMinimizeAll function.
*/
public void winMinimizeAllUndo() {
autoItX.invoke("WinMinimizeAllUndo");
}
/**
* Moves and/or resizes a window.
*
* @param title
* The title of the window to move/resize.
* @param text
* The text of the window to move/resize.
* @param x
* X coordinate to move to.
* @param y
* Y coordinate to move to.
* @param width
* New width of the window.
* @param height
* New height of the window.
*/
public void winMove(String title, String text, int x, int y, int width, int height) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant vWidth = new Variant(width);
Variant vHeight = new Variant(height);
Variant[] params = new Variant[] { vTitle, vText, vX, vY, vWidth, vHeight };
autoItX.invoke("WinMove", params);
}
/**
* Moves and/or resizes a window.
*
* @param title
* The title of the window to move/resize.
* @param text
* The text of the window to move/resize.
* @param x
* X coordinate to move to.
* @param y
* Y coordinate to move to.
*/
public void winMove(String title, String text, int x, int y) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vX = new Variant(x);
Variant vY = new Variant(y);
Variant[] params = new Variant[] { vTitle, vText, vX, vY };
autoItX.invoke("WinMove", params);
}
/**
* Change a window's "Always On Top" attribute.
*
* @param title
* The title of the window to affect.
* @param text
* The text of the window to affect.
* @param isTopMost
* Determines whether the window should have the "TOPMOST" flag
* set. true=set on top flag, false = remove on top flag
*/
public void winSetOnTop(String title, String text, boolean isTopMost) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
int flag = 0;
if (isTopMost) {
flag = 1;
}
Variant vFlag = new Variant(flag);
Variant[] params = new Variant[] { vTitle, vText, vFlag };
autoItX.invoke("WinSetOnTop", params);
}
/**
* Shows, hides, minimizes, maximizes, or restores a window.
*
* @param title
* The title of the window to affect.
* @param text
* The text of the window to affect.
* @param flag
* The "show" flag of the executed program:
* SW_HIDE = Hide window,
* SW_SHOW = Shows a previously hidden window,
* SW_MINIMIZE = Minimize window,
* SW_MAXIMIZE = Maximize window,
* SW_RESTORE = Undoes a window minimization or maximization.
*/
public void winSetState(String title, String text, int flag) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vFlag = new Variant(flag);
Variant[] params = new Variant[] { vTitle, vText, vFlag };
autoItX.invoke("WinSetState", params);
}
/**
* Changes the title of a window.
*
* @param title
* The title of the window to affect.
* @param text
* The text of the window to affect.
* @param newtitle
* The new title to give to the window.
*/
public void winSetTitle(String title, String text, String newtitle) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vNewtitle = new Variant(newtitle);
Variant[] params = new Variant[] { vTitle, vText, vNewtitle };
autoItX.invoke("WinSetTitle", params);
}
/**
* Sets the transparency of a window. (Windows 2000/XP or later)
*
* @param title
* The title of the window to affect.
* @param text
* The text of the window to affect.
* @param transparency
* A number in the range 0 - 255. The larger the number, the more
* transparent the window will become.
* @return True on success, false on failure. .error() will be set to 1 if
* the function isn't supported on an OS.
*/
public boolean winSetTrans(String title, String text, int transparency) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vTransparency = new Variant(transparency);
Variant[] params = new Variant[] { vTitle, vText, vTransparency };
Variant result = autoItX.invoke("WinSetTrans", params);
return result.getInt() != 0;
}
/**
* Pauses execution of the script until the requested window exists. The
* script polls for window match every 250 milliseconds or so.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @param timeout
* Timeout in seconds
* @return True if success, false otherwise.
*/
public boolean winWait(String title, String text, int timeout) {
return winVariantBool(title, text, timeout, "WinWait");
}
/**
* Pauses execution of the script until the requested window exists. The
* script polls for window match every 250 milliseconds or so.
*
* @param title
* The title of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWait(String title) {
return winVariantBool(title, "WinWait");
}
/**
* Pauses execution of the script until the requested window exists. The
* script polls for window match every 250 milliseconds or so.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWait(String title, String text) {
return winVariantBool(title, text, "WinWait");
}
/**
* Pauses execution of the script until the requested window is active.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @param timeout
* The timeout in seconds.
* @return True if success, false otherwise.
*/
public boolean winWaitActive(String title, String text, int timeout) {
return winVariantBool(title, text, timeout, "WinWaitActive");
}
/**
* Pauses execution of the script until the requested window is active.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWaitActive(String title, String text) {
return winVariantBool(title, text, "WinWaitActive");
}
/**
* Pauses execution of the script until the requested window is active.
*
* @param title
* The title of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWaitActive(String title) {
return winVariantBool(title, "WinWaitActive");
}
/**
* Pauses execution of the script until the requested window does not exist.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @param timeout
* The timeout in seconds.
* @return True if success, false otherwise.
*/
public boolean winWaitClose(String title, String text, int timeout) {
return winVariantBool(title, text, timeout, "WinWaitClose");
}
/**
* Pauses execution of the script until the requested window does not exist.
*
* @param title
* The title of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWaitClose(String title) {
return winVariantBool(title, "WinWaitClose");
}
/**
* Pauses execution of the script until the requested window does not exist.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWaitClose(String title, String text) {
return winVariantBool(title, text, "WinWaitClose");
}
/**
* Pauses execution of the script until the requested window is not active.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @param timeout
* The timeout in seconds.
* @return True if success, false otherwise.
*/
public boolean winWaitNoActive(String title, String text, int timeout) {
return winVariantBool(title, text, timeout, "WinWaitNotActive");
}
/**
* Pauses execution of the script until the requested window is not active.
*
* @param title
* The title of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWaitNoActive(String title) {
return winVariantBool(title, "WinWaitNotActive");
}
/**
* Pauses execution of the script until the requested window is not active.
*
* @param title
* The title of the window to check.
* @param text
* The text of the window to check.
* @return True if success, false otherwise.
*/
public boolean winWaitNoActive(String title, String text) {
return winVariantBool(title, text, "WinWaitNotActive");
}
private boolean winVariantBool(String title, String text, int timeout, String function) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant vTimeout = new Variant(timeout);
Variant[] params = new Variant[] { vTitle, vText, vTimeout };
Variant result = autoItX.invoke(function, params);
return oneToTrue(result.getInt());
}
private boolean winVariantBool(String title, String text, String function) {
Variant vTitle = new Variant(title);
Variant vText = new Variant(text);
Variant[] params = new Variant[] { vTitle, vText };
Variant result = autoItX.invoke(function, params);
return oneToTrue(result.getInt());
}
private boolean winVariantBool(String title, String function) {
Variant vTitle = new Variant(title);
Variant[] params = new Variant[] { vTitle };
Variant result = autoItX.invoke(function, params);
return oneToTrue(result.getInt());
}
/**
* Retrieves the text from a standard status bar control.
*
* @param title
* The title of the window to check.
* @return The text from a standard status bar control.
*/
public String statusbarGetText(String title) {
return autoItX.invoke("StatusbarGetText", title).getString();
}
/**
* Converts the value 1 to true, anything else to false.
*
* @param i
* The value to convert to true/false
* @return 1 = true, anything else = false.
*/
private boolean oneToTrue(int i) {
return i == 1;
}
/**
* Converts the value 1 to true, anything else to false.
*
* @param i
* The value to convert to true/false
* @return 1 = true, anything else = false.
*/
private boolean oneToTrue(Variant v) {
if (v.getvt() == Variant.VariantInt || v.getvt() == Variant.VariantShort) {
return v.getInt() == 1;
}
return false;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy