keypress simuleren

Status
Niet open voor verdere reacties.

Qlubbie

Gebruiker
Lid geworden
24 okt 2007
Berichten
16
Hallo,

ik wil kijken of het mogelijk is om een keypress event te simuleren.
ik wil een tooltje maken wat om de x sec een toets indrukt in een aktief venster.
dus iets van:

Code:
while(true) {
    blabla.wait(random(10sec));
    keypress("a");
    keypress("b");
}

wat dus in bijvoorbeeld notepad ab zou blijven printen.
iemand enig idee?
 
ok. bedankt, maar ik wil het graag zelf doen gewoon om er een btje mee te experimenteren. :)
 
De Robot class heeft hier een methode voor:


Voorbeeld (bron: http://www.java-tips.org/java-se-tips/java.awt/simulating-mouse-and-key-presses.html)
Code:
try {
    Robot robot = new Robot();
    
    // Simuleer een muisklik
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    
    // Simuleer een toets indrukken.
    robot.keyPress(KeyEvent.VK_A);
    robot.keyRelease(KeyEvent.VK_A);
} catch (AWTException e) {
    e.printStackTrace();
}

Voor het "om de zoveel seconden" probleem van je zou ik een Timer gebruiken ( http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/Timer.html ).

Voorbeeld code:
Code:
//Timer zelf:
timer = new Timer(1000, new TimerHandler());         //Het getal is in miliseconden duizend is dus 1 seconde.
timer.start();

//Handler
private class TimerHandler implements ActionListener {
	public void actionPerformed(ActionEvent e) {
		slang.verplaatsing();
		repaint();
	}
}
 
Laatst bewerkt:
Bedankt dat was precies wat ik zocht heb het een btje anders gedaan maar die robot class kon ik niet.:thumb:

Code:
public class Test {

    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            Random random = new Random();
            while (true) {
                int delay = random.nextInt(500) + 1000;
                keyPress(robot);
                Thread.sleep(delay);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void keyPress(Robot robot) {
        robot.keyPress(KeyEvent.VK_1);
        robot.keyRelease(KeyEvent.VK_1);
    }

}
 
Helemaal goed, zou je de vraag (als hij zo voldoende beantwoord is) als "opgelost" willen markeren.


B.v.d.
NewbProgr
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan