Witam,
czy jest jakas mozliwosc na stworzenie MouseListenera dla pulpitu? Chcialbym odczytywac konkretne wspolrzedne z pulpitu, np. uzytkownik kliknal w miejsce o wspolrzednych 20,20. Czy jest taka mozliwosc?
A w jakim celu? Bez JNI raczej się nie obejdzie.
Bawie sie robotem awt i przesuwam ikony na pulpicie, uruchamiam programy z paska startowego itp. Sek w tym, ze obecnie podaje wspolrzedne do robota metoda prob i bledow. Chcialbym napisac program ktory zczyta mi wspolrzedne moich klikniec, a nastepnie je powtorzy ;).
Gdy kilka dni temu założylem prawie identyczny temat, to powędrował do kosza z komentarzem "czyżby kolejny chakier?", więc uważaj ;)
Też właśnie interesuję się tem tematem i jak na razie odkryłem, że nasłuchiwanie wszystkich zdarzeń odbywa się za pomocą takiego kodu:
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
System.out.println(event);
}
}, -1);
Niestety, informuje on tylko o zdarzeniach dotyczących okien Twojego programu; tych mających miejsce poza oknami nie rejestruje. I w tym momencie nie wiem - JVM nie otrzymuje tych zdarzeń, czy tylko EventQueue ich nie przesyła? Jak na razie grzebię w kodzie, ale jak się dowiem, to dam znać.
Pozdrawiam, Towe.
@Edit
Zawsze możesz robić screeny i sprawdzać współrzędne w Paint'cie ;P
Nie, nie otrzymuje komunikatów o zdarzeniach poza własnymi oknami.
Tez sie zastanawialem o screenach ;). W koncu robot awt potrafi robic zrzuty ekranu:
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
Robot robot;
try {
robot = new Robot();
BufferedImage img = robot.createScreenCapture(new Rectangle(size));
ImageIO.write(img, "JPG", new File("screenShot.jpg"));
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
Moge sobie nawet wyswietlic obrazek w full screenie i wyklikac wspolrzedne. Troche toporne, malo eleganckie, ale pewnie skuteczne.
Z drugiej strony zaproponowal ktos JNI, ale nie widze sensu w moim przypadku bawic sie z uchwytami ;). Jesli ktos ma jakis inny pomysl to chetnie poczytam.
JNI, albo JNA to nie taki najgorszy sposób. Przecież jedyne, co trzeba zrobić, to bramka z Windows do Javy. Nie trzeba pisać prawie żadnego kodu poza prymitywnym przerzucaniem danych w jedną i drugą stronę.
Tak naprawdę, to rzeczy, których potrzebujesz są już w sunowskiej Javie, tyle że w mniej lub bardziej prywatnych klasach/bibliotekach oraz w raczej niezbyt przyjaznej postaci. Można tego tam poszukać, ale prawdopodobnie szybciej będzie skorzystać bezpośrednio z winapi.
przepraszam za odświeżenie tematu
Potrzebuje napisać aplikację która będzie sczytywać zdarzenia jazdy myszą po pulpicie lub kliknięcie czyli ogólnie MouseListenera i własnie muszę złapać uchwyt pulpitu może ktoś pomóc