2012-01-17 13 views
23

Quiero crear una aplicación de consola que mostrará la tecla que se presiona en la pantalla de la consola, he hecho este código hasta ahora:Cómo manejar evento de pulsación de tecla aplicación de consola

static void Main(string[] args) 
    { 
     // this is absolutely wrong, but I hope you get what I mean 
     PreviewKeyDownEventArgs += new PreviewKeyDownEventArgs(keylogger); 
    } 

    private void keylogger(KeyEventArgs e) 
    { 
     Console.Write(e.KeyCode); 
    } 

quiero saber , ¿qué debería escribir en main para poder llamar a ese evento?

Respuesta

20

Para la aplicación de la consola se puede hacer esto, los do while se ejecute el bucle hasta que usted presiona x

public class Program 
{ 
    public static void Main() 
    { 

     ConsoleKeyInfo keyinfo; 
     do 
     { 
      keyinfo = Console.ReadKey(); 
      Console.WriteLine(keyinfo.Key + " was pressed"); 
     } 
     while (keyinfo.Key != ConsoleKey.X); 
    } 
} 

esto sólo funcionará si su aplicación de consola tiene el foco. Si desea recopilar eventos de pulsación de teclas en todo el sistema, puede usar windows hooks

12

Desafortunadamente, la clase Console no tiene ningún evento definido para la entrada del usuario; sin embargo, si desea generar el carácter actual que se presionó, puede hacer lo siguiente :

static void Main(string[] args) 
{ 
    //This will loop indefinitely 
    while (true) 
    { 
     /*Output the character which was pressed. This will duplicate the input, such 
      that if you press 'a' the output will be 'aa'. To prevent this, pass true to 
      the ReadKey overload*/ 
     Console.Write(Console.ReadKey().KeyChar); 
    } 
} 

Console.ReadKey devuelve un objeto ConsoleKeyInfo, que encapsula una gran cantidad de información acerca de la tecla que se pulsa.

Cuestiones relacionadas