Foro de elhacker.net

Programación => Java => Mensaje iniciado por: sapito169 en 9 Enero 2009, 07:11 am



Título: capturar teclado
Publicado por: sapito169 en 9 Enero 2009, 07:11 am
quisiera saber como capturar los eventos del teclado

por ejemplo al presionar escape se sierre la ventana
o al presionar ctrl+m gane el foco un area de texto


Título: Re: capturar teclado
Publicado por: Casidiablo en 9 Enero 2009, 14:10 pm
Hola, aquí tienes algunos ejemplos:

http://casidiablo.net/codigo-guis-en-java-eventos-de-mouse-y-teclado/

La idea de todo es implementar la interfaz KeyListener en la clase que quieres que maneje eventos del teclado.

Un saludo.


Título: Re: capturar teclado
Publicado por: sapito169 en 11 Enero 2009, 05:19 am
no sirve cuando tu Jframe esta cubiero por un monton de paneles


Título: Re: capturar teclado
Publicado por: cyberserver en 11 Enero 2009, 22:12 pm
Lo que quiere hacer sapito 169 es un  tipo Keylogger.......

Estaria interesante saber como funciona en Java!!! :rolleyes:

Keylogger por software. Contrariamente a las creencias comunes, un keylogger por software es simple de escribir, con un conocimiento de trabajo de C o de C++ y un conocimiento de los API proporcionados por el sistema operativo del objetivo. Los keyloggers del software bajan en las categorías siguientes:

   1. Basado en núcleo: Este método es el más difícil de escribir, y combatir. Tales keyloggers residen en el nivel del núcleo y son así prácticamente invisibles. Derriban el núcleo del OS y tienen casi siempre el acceso autorizado al hardware que los hace de gran alcance. Un keylogger que usa este método puede actuar como conductor del teclado por ejemplo, y accede así a cualquier información mecanografiada en el teclado mientras que va al sistema operativo.
   2. Enganchados: Tales keyloggers enganchan el teclado con las funciones proporcionadas por el sistema operativo. El sistema operativo los activa en cualquier momento en que se presiona una tecla y realiza el registro.
   3. Métodos creativos: Aquí el programador utiliza funciones como GetAsyncKeyState, GetForegroundWindow, etc. Éstos son los más fáciles de escribir, pero como requieren la revisión el estado de cada tecla varias veces por segundo, pueden causar un aumento sensible en uso de la CPU y pueden ocasionalmente dejar escapar algunas pulsaciones de teclas


Título: Re: capturar teclado
Publicado por: -Ramc- en 11 Enero 2009, 23:51 pm
La única forma de hacer un keylogger en java es con JNI, si eso es lo que quieres.


Título: Re: capturar teclado
Publicado por: joelmanx en 16 Septiembre 2010, 21:03 pm
hola a todos, seria interesante que suban un ejemplo de cpatura de eventos de teclado del SO, como lo decian.

Es posible ligar esos eventos a funciones?, para hacer visible o invisible una aplicacion swing?.


Título: Re: capturar teclado
Publicado por: Debci en 16 Septiembre 2010, 21:32 pm
Si revisan el post con sources interesantes es probable que encuentren el keylogger que el compañero LEYER realizo con JNI.

Saludos


Título: Re: capturar teclado
Publicado por: 1mpuls0 en 17 Septiembre 2010, 04:10 am
Hola sapito169

buscas algo como esto?  :(

Código
  1. import javax.swing.*;
  2. import java.awt.event.*;
  3.  
  4. public class PanelDeTeclado extends JPanel implements KeyListener, MouseListener {
  5.  
  6.    public PanelDeTeclado(){
  7.        this.addMouseListener(this);
  8.        this.addKeyListener(this);
  9.    }
  10.  
  11.    @Override
  12.    public boolean isFocusable(){
  13.        return true;
  14.    }
  15.  
  16.    public void mousePressed( MouseEvent e ) {}
  17.    public void mouseReleased( MouseEvent e ) {}
  18.    public void mouseClicked( MouseEvent e ) {}
  19.  
  20.    public void mouseEntered( MouseEvent e ) {
  21.        this.requestFocus();
  22.    }
  23.  
  24.    public void mouseExited( MouseEvent e ) {}
  25.  
  26.    public void keyReleased( KeyEvent e ) {
  27.    }
  28.  
  29.    public void keyTyped( KeyEvent e ) {
  30.    }
  31.  
  32.    public void keyPressed( KeyEvent e ) {
  33.        System.out.println("Usted ha presionado la tecla: "+e.getKeyText(e.getKeyCode()));
  34.    }
  35.  
  36.    public static void main( String [] args ){
  37.        JFrame f = new JFrame();
  38.        f.getContentPane().add(new PanelDeTeclado());
  39.        f.setSize(400,300);
  40.        f.setVisible(true);
  41.        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  42.    }
  43. }
  44.  

un saludo