2010-08-16 9 views
5

Devo rilevare quando è presente l'attività del mouse o della tastiera. La mia applicazione viene eseguita in background (vassoio) e ho bisogno di rilevare questa attività anche quando la mia app non è a fuoco.Attività tastiera/mouse Java (anche al di fuori della mia app)

Non ho bisogno di sapere quali tasti sono stati premuti, ma semplicemente QUANDO vengono premuti.

Posso farlo con solo Java? Ho letto alcune soluzioni usando JNI e C++/C, ma sembrano essere specifiche per il sistema operativo. C'è una soluzione facile a questo che funzionerà con Windows, Linux e Mac?

Grazie!

+1

Questo genere di cose è necessariamente specifico per la piattaforma, dal momento che diversi piattaforme OS offrono questa funzionalità in modi diversi, e alcune configurazioni potrebbe anche non offrire a tutti. –

+0

OK AGGIORNAMENTO: Quindi, ho trovato una libreria per windows (jintellitype) e per linux (jxgrabkey). Qualcuno ne conosce uno per MAC OSX? –

+0

Probabilmente dirò che questa non sarà una domanda per cui otterrai una buona risposta. In sostanza, vuoi che il tuo programma si comporti come un keylogger, e quelli di solito devono collegarsi al kernel. Java non ha il potere di farlo, quindi sei sfortunato. –

risposta

3

Dato che è necessario JNI, che si affida alle API specifiche del sistema operativo, l'unico modo sarebbe avere un'implementazione per ciascun sistema operativo supportato e caricarlo dinamicamente dopo aver rilevato il sistema operativo nell'applicazione.

Per Windows Java Global Keyboard/Mouse Hook – JNI

+0

Con la permissione di Jotschi (l'autore originale della tastiera/mouse Hook), ho preso la sua libreria anni fa e ho creato una nuova versione. Si prega di trovare l'ultima versione ed esempi [su GitHub] (https://github.com/kristian/system-hook). Oltre a una descrizione della libreria su [il post del blog] (http://kra.lc/blog/2016/02/java-global-system-hook/). –