Robot, przerwanie dzialania

0

eksperymentuje z klasa Robot i majac przykladowo taki kod jak ponizej, chcialbym aby program przestal dzialac nie tak jak tutaj po 10 iteracjach petli tylko zamiast tego aby program wykonywal sie do momentu az nie nacisniemy np "p" na klawiaturze. czy to ma dzialac jako watek do momentu keidy jakis listener nie dostanie info o p?

 import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class App {

    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            robot.delay(5000);
            
            
for (int i = 0; i < 10; i++) {
    int keycode =KeyEvent.VK_W;
    
    robot.delay(1000);
    robot.keyPress(keycode);
    
    robot.keyRelease(keycode);
    
}            
            
        } catch (AWTException e) {
            e.printStackTrace();
        }

    }

}
1

chyba wiem jak to zrobie
zrobie drugi watek ktory bedzie czytal klawiature i jak bedzie p to zmieni warunek petli while z watku pierwszego ktory bedzie robotem i flaga false- przerwanie

0

dodaj KeyListnera.
po co Ci drugi wątek? przerwij działanie sprawdzając co wywołało KeyEvent.

0

@up masz racje zrobie to tak jak mowisz,

inny problem:
chce aby moj program nagral sekwencje myszki/ klawiatury i zpoenij mozna bylo poscic nagranie w petli. wszystko fajnie tlyko program dziala dopoki na focusie mam okno mojego programu, jezeli sie alttabne gdzies to juz nie dziala czytanie moich ruchow, jak to rozwiazac?

0

nie da się

0

nie da się

Nie wprowadzaj go w błąd. https://code.google.com/p/jnativehook/
Nie jest to zadanie proste, ale jak najbardziej możliwe (kiedyś musiałem coś podobnego wykonać w C#).

0

Ok, nie wiedziałem że istnieje gdzieś taka biblioteka. Przy czym jest na GPL-u więc w żadnych projektach z licencjami nie GPL raczej z tym nie pośmigasz :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1