¿Estás de acuerdo con la declaración "No podemos crear un capturador de teclado en Java"?. Sé que la mayoría dirán que esta afirmación es correcta. Porque sabemos que Java no puede leer nada fuera de la JVM (Java Virtual Machine). Incluso yo estaba pensando igual, pero existe un API llamada jNativeHook que hace que esto suceda.
Características jNativeHook
- Global Keyboard Listener
- Global Mouse Listener
- Global Mouse Wheel Listener
¿Cómo se logra la captura de pulsaciones de teclas desde otra aplicación o en cualquier lugar en el sistema?
Bien jNativeHook usa otro lenguaje de programación para capturar pulsaciones de teclas y pasarlas a su aplicación. Hace uso de:
DLL (Dynamic Link Library) para windows.
.dylib (Xcode Dynamic Library) para mac
.so (objeto compartido) para linux
import org.jnativehook.GlobalScreen; import org.jnativehook.NativeHookException; import org.jnativehook.keyboard.NativeKeyEvent; import org.jnativehook.keyboard.NativeKeyListener; /** * @author javaQuery * Global Keyboard Listener */ public class jNativeHookExample implements NativeKeyListener { /* Key Pressed */ public void nativeKeyPressed(NativeKeyEvent e) { System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode())); /* Terminate program when one press ESCAPE */ if (e.getKeyCode() == NativeKeyEvent.VK_ESCAPE) { GlobalScreen.unregisterNativeHook(); } } /* Key Released */ public void nativeKeyReleased(NativeKeyEvent e) { System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode())); } /* I can't find any output from this call */ public void nativeKeyTyped(NativeKeyEvent e) { System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode())); } public static void main(String[] args) { try { /* Register jNativeHook */ GlobalScreen.registerNativeHook(); } catch (NativeHookException ex) { /* Its error */ System.err.println("There was a problem registering the native hook."); System.err.println(ex.getMessage()); System.exit(1); } /* Construct the example object and initialze native hook. */ GlobalScreen.getInstance().addNativeKeyListener(new jNativeHookExample()); } }Links Útiles
Download API: https://github.com/kwhat/jnativehook
Examples: https://github.com/kwhat/jnativehook/wiki
Revisar la página de inicio del proyecto jNativeHook para más información y detalles.
Informacion tomada de http://www.javaquery.com/2014/05/how-to-create-key-logger-in-java.html
Muy bien, buen aporte
ResponderBorrarcojonudoooooooooooo
ResponderBorrardiego salos aguiran, bastante buena aportacion chato gay ortega
ResponderBorrar¿donde se guarda todo lo que capturo?
ResponderBorrarjoder como amo la programacion, gracias
ResponderBorrarHola que tal, está genial, pero se me presenta un inconveniente, cuando el programa que captura las acciones de teclado está en segundo plano, algunas letras se pierden en el camino, por qué podría ser? por ejemplo, la entrada es ésta: 3035D613D7A5D5C000000002 pero sólo recibo ésto: 3035D61 7 5D5C00000
ResponderBorrarquisiera que me apoyaras lo intento poner en una mac
ResponderBorrar