procedure TForm1.Timer1Timer(Sender: TObject);
beginif GetKeyState(VK_CAPITAL) and 1 = 0 then
Form1.Caption := 'Caps lock не горит'
else
Form1.Caption := 'Caps lock горит';
end;
Простой и полезный код на Delphi!
Процедура Timer1Timer вызывается каждый раз, когда таймер, связанный с ней, срабатывает (в этом случае, предположительно, с регулярными интервалами). Процедура проверяет состояние клавиши Caps Lock с помощью функции GetKeyState, которая возвращает значение, указывающее, является ли клавиша нажатой или нет.
Если результат GetKeyState(VK_CAPITAL) равен 0 при битвом AND с 1 (то есть наименьшая значащая цифра установлена), то это означает, что Caps Lock не включен. В этом случае заголовок формы изменяется на 'Caps lock не горит' (что переводится как "Caps lock is not on" на английском языке).
Если результат GetKeyState(VK_CAPITAL) не равен 0 при битвом AND с 1, то это означает, что Caps Lock включен. В этом случае заголовок формы изменяется на 'Caps lock горит' (что переводится как "Caps lock is on" на английском языке).
Использование оператора bitwise AND (and) позволяет проверять только наименьшую значащую цифру результата, которая соответствует состоянию клавиши Caps Lock.
Пример implementation!
Альтернативное решение:
Если вы хотите сделать код более читаемым или эффективным, можно использовать переменную типа Boolean, чтобы отслеживать состояние Caps Lock. Затем можно использовать оператор if-then с одиночной присваиванием вместо битового оператора. Однако, это реализация все еще довольно проста и легко понятна.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not GetKeyState(VK_CAPITAL) = 0 then
Form1.Caption := 'Caps lock не горит'
else
Form1.Caption := 'Caps lock горит';
end;
Однако, это реализация все еще довольно проста и легко понятна.
В статье описывается программное решение, определяющее состояние CapsLock и изменяющее заголовок формы в зависимости от его состояния.
Комментарии и вопросы
:: 2011-07-06 20:54:48 :: re:Определить состояние CapsLock
Долго искал. А тут такой простой способ. Спасибо все работает!
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.