Как перехватить нажатие клавиши в консольном приложении (.NET)
Если нужно проверить, не была ли нажата пользователем определённая клавиша клавиатуры во время выполнения длительной операции в консольном приложении, используется свойство Console.KeyAvailable().
Для примера напишем процедуру CheckEscapePressed(), которая будет проверять, не была ли нажата клавиша Escape:
Public Function CheckEscapePressed() as Boolean If Console.KeyAvailable Then Dim k As ConsoleKey = Console.ReadKey(True).Key If k.Equals(ConsoleKey.Escape) Then Console.Write("Операция была прервана.") Return True End If End If Return False End Function
Можно проверять нажатие любой из доступных в перечислении System.ConsoleKey клавиш.
А теперь в любом месте программы можем использовать нашу процедуру CheckEscapePressed(). Например, для прерывания бесконечного цикла по нажатию на клавишу "Escape":
Do Console.WriteLine("Ожидаем нажатия клавиши ""Escape""...") Thread.Sleep(1000) Loop Until CheckEscapePressed()
Поблагодарить автора:
Поделиться
Related items
- WPF: выделение текста в TextBox при получении фокуса ввода
- Программная реализация кодера свёрточного кода и декодера по алгоритму Витерби
- Управление измерительными приборами Rohde-Schwarz по интерфейсу RSIB
- Изменяемая асинхронно наблюдаемая коллекция ObservableCollection
- Реализация интерфейса 1-Wire на микросхемах FTDI