Domanda

Sto cercando da un po 'di tempo e tutti sembrano pensare che questo non sia possibile usando solo Java, quindi darò una possibilità a SO;)

Esiste un modo per far sì che la mia applicazione Java ascolti gli eventi (in particolare gli eventi chiave) mentre un'altra applicazione non correlata ha lo stato attivo della finestra? Nella mia situazione, sto cercando di rilevare quando l'utente ha premuto il tasto "Pausa" sulla tastiera anche se la mia applicazione Java non ha lo stato attivo.

Ho sentito alcune persone dire che l'unico modo è scrivere un codice C e usare JNI. Sei curioso di sapere se qualcuno sapeva come evitarlo? O, in caso contrario, almeno un tutorial davvero carino sulla roba c / JNI?

Grazie

È stato utile?

Soluzione

Comprendo che non è possibile farlo. A un livello fondamentale, la JVM genera eventi solo per gli eventi O / S che riceve e riceve eventi di input O / S solo quando è attiva.

Sono sicuro che potresti utilizzare JNI per attivare l'O / S per generare eventi per tutti gli input, ma sarebbe molto dipendente dall'O / S.

Altri suggerimenti

Ecco la migliore risposta che ho trovato:

" Esiste una libreria per gestire il controllo nativo di tastiera e mouse: https://github.com/kwhat/jnativehook ) & Quot;

Non sono a conoscenza di alcun modo per aggirare neanche quello. Ho trovato questo link sui forum di Java con un buon esempio di come impostare roba JNI e crea un gestore di tastiera globale (troppo da aggiungere qui). È un po 'datato (2005), ma l'esempio sembra abbastanza approfondito per iniziare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top