Ich habe eine Klasse AdvancedRobot geschrieben, die eine erweiterte Funktion gegenüber ihrer Superklasse hat:
Sie kann den Mauszeiger an eine Stelle auf dem Bildschirm bewegen, an der sich ein bestimmtes Bild befindet.
Zumindest sollte sie das tun; die Zahl der Fundstellen ist immer 0.
Woran könnte das liegen?
Meine Robot-Erweiterung:
Testklasse:
Sie kann den Mauszeiger an eine Stelle auf dem Bildschirm bewegen, an der sich ein bestimmtes Bild befindet.
Zumindest sollte sie das tun; die Zahl der Fundstellen ist immer 0.
Woran könnte das liegen?
Meine Robot-Erweiterung:
Code:
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
public class AdvancedRobot extends Robot {
public AdvancedRobot() throws AWTException {
super();
}
public int mouseMove(BufferedImage image, int width, int height) {
int x = 0, y = 0, found = 0;
BufferedImage screen = createScreenCapture(new Rectangle(0, 0, width, height));
for(int tempX = 0; tempX <= width; tempX++) {
for(int tempY = 0; tempY <= width; tempY++) {
if(image.equals(screen.getSubimage(x, y, image.getWidth(), image.getHeight()))) {
x = tempX;
y = tempY;
found++;
}
}
}
if(found != 0) mouseMove(x, y);
return found;
}
}
Testklasse:
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class AdvancedRobotTest extends JFrame {
private static final long serialVersionUID = 1285145963464958035L;
public AdvancedRobotTest() {
try {
AdvancedRobot rob = new AdvancedRobot();
int i = rob.mouseMove(ImageIO.read(new File("Test.bmp")),
getToolkit().getScreenSize().width, getToolkit().getScreenSize().height);
System.out.println(i);
System.out.println("Programm beendet.");
System.exit(0);
}
catch(AWTException awte) {}
catch(IOException ioe) {}
}
public static void main(String args[]) {
new AdvancedRobotTest();
}
}