Wykrywanie kliknięć myszą poza oknem aplikacji.

0

Wybaczcie jeśli to głupie pytanie, ale czy jest taka możliwość w Javie aby wykrywać kliknięcia myszą poza oknem aplikacji? W sensie, że działa sobie aplikacja w tle i wychwytuje po prostu koordynaty gdzie kliknąłeś myszą. Szukałem na google i niestety same przeczące rezultaty. Jedynie co znalazłem to funkcja getPointerInfo() z klasy MouseInfo, ale to tylko wykrywa gdzie położony jest kursor. Jeśli nie ma takiej możliwości w javie to może jakieś inne języki mają taką moc?

1

To czego szukasz nazywa się "Global mouse hook". Pierwsze zapytanie do google daje wynik w C#.

0

Ok, dzięki. Z tego co znalazłem to muszę się zaznajomić z technologią Java Native Interface, bo w czystej javie chyba nie da rady. Trzeba się zaopatrzyć w metody, które są zawarte w natywnych językach.

0

Oczywiście, że idzie zrobić nawet w czystej Javie. Robisz JFrame z flagą undecorated i MaximizeBoth, więc masz przezroczyste okno na całą powierzchnię ekranu. Przechwytujesz więc wszystkie kliknięcia jako swoje, a potem na moment chowasz okno i Robotem przekazujesz kliknięcie ze wszystkimi parametrami dokładnie w to samo miejsce. Oryginalne okno dostaje kliknięcie czy inne zdarzenie myszą, które użytkownik zamierzał wykonać na tym co widzi. Jest jednak pewne ograniczenie. Ponieważ mysz w Javie obsługiwana jest tylko do 2 osi i 3 buttonów maksymalnie, to tylko tyle można przekazać "niżej". Jeżeli ktoś zamontuje sobie jakąś super hiper mysz dla graczy i sterownik obsługujący na tej myszy wszystko co możliwe, to się trochę zdziwi bo parę klawiszy przestanie mu działać. W przypadku konfiguracji wielu ekranów trzeba ten fakt wykryć i stworzyć tyle okien rozciągniętych na każdy z nich ile potrzeba.

0

Pomysł ciekawy. Sprawdziłem, działa całkiem w porządku. Nie wiem jak będzie dalej, gdy dojdą kolejne funkcję.

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