Je veux créer une application console qui affichera la touche sur laquelle on appuie sur l'écran de la console, j'ai fait ce code jusqu'à présent:
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);
}
Je veux savoir, que dois-je taper main pour pouvoir appeler cet événement?
Pour l'application console, vous pouvez le faire, le do while
la boucle s'exécute jusqu'à ce que vous appuyiez sur 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);
}
}
Cela ne fonctionnera que si votre application console a le focus . Si vous souhaitez rassembler les événements de pression de touche à l'échelle du système, vous pouvez utiliser hooks Windows
Malheureusement, la classe Console n'a aucun événement défini pour l'entrée utilisateur, mais si vous souhaitez afficher le caractère actuel sur lequel vous avez appuyé, vous pouvez effectuer les opérations suivantes:
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 renvoie un objet ConsoleKeyInfo , qui encapsule beaucoup d'informations sur la touche sur laquelle vous avez appuyé.
Une autre solution, je l'ai utilisée pour mon aventure textuelle.
ConsoleKey choice;
do
{
choice = Console.ReadKey(true).Key;
switch (choice)
{
// 1 ! key
case ConsoleKey.D1:
Console.WriteLine("1. Choice");
break;
//2 @ key
case ConsoleKey.D2:
Console.WriteLine("2. Choice");
break;
}
} while (choice != ConsoleKey.D1 && choice != ConsoleKey.D2);