2010-08-16 12 views
5

Muszę wykryć, kiedy aktywność myszy lub klawiatury jest obecna. Moja aplikacja działa w tle (taca) i muszę wykryć tę aktywność, nawet gdy moja aplikacja nie jest aktywna.Aktywność Java Keyboard/Mouse (nawet poza moją aplikacją)

Nie muszę wiedzieć, jakie klawisze zostały naciśnięte, ale po prostu KIEDY są wciśnięte.

Czy mogę to zrobić z samą Javą? Czytałem niektóre rozwiązania przy użyciu JNI i C++/C, ale wydają się być specyficzne dla systemu operacyjnego. Czy istnieje proste rozwiązanie tego problemu, które będzie działać z systemami Windows, Linux i Mac?

Dzięki!

+1

Takie rzeczy zawsze jest platforma specyficzne, ponieważ różne platformy systemowe oferują tę funkcję w różny sposób, a niektóre konfiguracje mogą nie oferują nawet go w ogóle. –

+0

OK AKTUALIZACJA: Znalazłem bibliotekę dla Windows (jintellitype) i dla Linuksa (jxgrabkey). Czy ktoś wie o jednym dla MAC OSX? –

+0

Mam zamiar powiedzieć, że to nie będzie pytanie, na które dostaniesz dobrą odpowiedź. Zasadniczo chcesz, aby twój program zachowywał się jak kluczowy rejestrator, a te zwykle muszą się podłączyć do jądra. Java nie ma takiej możliwości, więc nie masz szczęścia. –

Odpowiedz

3

Ponieważ wymagany jest JNI, który opiera się na interfejsach API specyficznych dla systemu operacyjnego, jedynym sposobem jest implementacja każdego obsługiwanego systemu operacyjnego i załadowanie go dynamicznie po wykryciu systemu operacyjnego w aplikacji.

Dla Windows Java Global Keyboard/Mouse Hook – JNI

+0

Z upoważnieniem Jotschi'ego (oryginalnego autora klawiatury/myszki), zabrałem jego bibliotekę lata temu i stworzyłem nową wersję. Znajdź najnowsze wydanie i przykłady [na GitHubie] (https://github.com/kristian/system-hook). Oprócz opisu biblioteki w [post na blogu] (http://kra.lc/blog/2016/02/java-global-system-hook/). –

Powiązane problemy