I need to check if any key is pressed in a console application. The key can be any key in the keyboard. Something like:
if(keypressed)
{
//Cleanup the resources used
}
I had come up with this:
ConsoleKeyInfo cki;
cki=Console.ReadKey();
if(cki.Equals(cki))
Console.WriteLine("key pressed");
It works well with all keys except modifier keys - how can I check these keys?
This can help you:
Console.WriteLine("Press any key to stop");
do {
while (! Console.KeyAvailable) {
// Do something
}
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
If you want to use it in an if
, you can try this:
ConsoleKeyInfo cki;
while (true)
{
cki = Console.ReadKey();
if (cki.Key == ConsoleKey.Escape)
break;
}
For any key is very simple: remove the if
.
As @DawidFerenczy mentioned we have to note that Console.ReadKey()
is blocking. It stops the execution and waits until a key is pressed. Depending on the context, this may (not) be handy.
If you need to not block the execution, just test Console.KeyAvailable
. It will contain true
if a key was pressed, otherwise false
.
Have a look at the Console.KeyAvailible
if you want nonblocking.
do {
Console.WriteLine("\nPress a key to display; press the 'x' key to quit.");
// Your code could perform some useful task in the following loop. However,
// for the sake of this example we'll merely pause for a quarter second.
while (Console.KeyAvailable == false)
Thread.Sleep(250); // Loop until input is entered.
cki = Console.ReadKey(true);
Console.WriteLine("You pressed the '{0}' key.", cki.Key);
} while(cki.Key != ConsoleKey.X);
}
If you want blocking then use Console.ReadKey
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.