Как отследить нажатия клавиш клавиатуры (delphi)
В этом уроке разберемся как отследить нажатие клавиш клавиатуры. Это может пригодиться во многих случаях.
Итак приступим. Нам понадобиться TTimer с вкладки System. Свойство Interval свежедобавленного таймера лучше поставить в 10. В событии OnTime таймера пишем следующий код:
1 2 3 4 5 6 7 8 9 | procedure TForm1.Timer1Timer(Sender: TObject); var i:integer; //Вспомогательная переменная для цикла begin for i:=0 to 255 do //Перебираем все клавиши if getasynckeystate(i)<>0 then //если нажата клавиша с идентификатором i то showmessage('Нажата клавиша '+inttostr(i)); //показываем сообщение что нажата клавиша i end; |
Обратите внимание что все клавиши включая клавиши мыши имеют идентификаторы от 0 до 255. (Кстати это легкий и простой способ узнать код клавиши которую вы нажимаете)
Каждые 10 миллисекунд мы прогоняем цикл опрашивая каждую из них. Во время всех этапов цикла опрашиваются ВСЕ клавиши. Поэтому если вам не нужно опрашивать все клавиши то лучше или уменьшить диапазон цикла или если вам нужно отслеживать только некоторые клавиши, то вовсе отказаться от цикла и заменить его несколькими условиями if getasynckeystate(код_клавиши)<>0 then
Наша программа будет реагировать на нажатия клавиатуры даже если сама программа не активна. Наш код будет работать в любом случае.
Если клавиша нажата то у нас показывается сообщение с кодом клавиши, но гораздо лучше эту информацию записывать или в файл, или в компонент memo, или реагировать любым другим способом. Но это уже зависит от ваших целей.
Вот так вот можно отследить нажатия клавиш. Это гораздо проще чем пользоваться так называемым хуком для захвата клавиш.
Понравилась статья? Жми: | Поделиться в соц. сетях |