import com.eaio.nativecall.IntCall;
import com.eaio.nativecall.NativeCall;
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AutoHotkeyTest {
public AutoHotkeyTest() {
System.out.println("\nStarting...\n");
control();
setupSearch();
}
private static IntCall exec;
public static int[] getWindowInfo(String windowName) {
try {
int x, y, width, height;
ahk("WinGetPos, X, Y, Width, Height, " + windowName);
ahk("Clipboard = %X%");
x = Integer.parseInt(waitForClipboardChange(5).toString());
ahk("Clipboard = %Y%");
y = Integer.parseInt(waitForClipboardChange(5).toString());
ahk("Clipboard = %Width%");
width = Integer.parseInt(waitForClipboardChange(5).toString());
ahk("Clipboard = %Height%");
height = Integer.parseInt(waitForClipboardChange(5).toString());
return new int[]{x, y, width, height};
} catch (Throwable t) {
return getWindowInfo(windowName);
}
}
public static void setupSearch() {
ahk("settitlematchmode 2\n" +
"\n" +
"CoordMode, ToolTip, screen\n" +
"CoordMode, Mouse, screen\n" +
"CoordMode, Pixel, screen");
}
public static int[] getCords() {
ahk("Clipboard = %FoundX%\n");
int x = Integer.parseInt(waitForClipboardChange(200).toString());
ahk("Clipboard = %FoundY%\n");
int y = Integer.parseInt(waitForClipboardChange(200).toString());
return new int[]{x, y};
}
static Timer t = null;
public static Object waitForClipboardChange(int miliSeconds) {
try {
t = new Timer(miliSeconds, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
t = null;
}
});
t.start();
Object temp = null;
while (temp == null && t != null) {
temp = Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
}
return temp;
} catch (Throwable j) {
j.printStackTrace();
return 3;
}
}
public static void clear() {
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new Transferable() {
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[0];
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return false;
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
return null;
}
}, null);
}
public static void move(int x, int y) {
ahk("MouseMove, " + x + ", " + y);
}
public static int search(int x1, int y1, int x2, int y2, int tolerance, String path) {
try {
ahk("ImageSearch, FoundX, FoundY, " + x1 + "," + y1 + "," + x2 + ", " + y2 + ",*" + tolerance + " C:\\Users\\Preston\\Pictures\\Screenshots\\" + path);
ahk("Clipboard = %ErrorLevel%\n");
System.out.println(waitForClipboardChange(2000));
return Integer.parseInt(waitForClipboardChange(2000).toString());
} catch (Throwable T) {
T.printStackTrace();
return search(x1, y1, x2, y2, tolerance, path);
}
}
public static boolean control() {
try {
NativeCall.init();
init();
return true;
} catch (Throwable t) {
t.printStackTrace();
System.out.println("\n" + "Something went wrong...");
return false;
}
}
public static void init() {
IntCall textdll = new IntCall("AutoHotkey.dll", "ahktextdll");
textdll.executeCall(new Object[]{"", "", ""});
exec = new IntCall("AutoHotkey.dll", "ahkExec");
}
public static void ahk(String code) {
exec.executeCall(code);
}
}