![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WH_KEYBOARD
bloodman © (2003-07-14 20:18:00)
Здравствуйте мастера.В своей программе я перехватываю сообщение WH_KEYBOARD.Как мне Узнать нажата ли клавиша Shift или Caps Lock ?? И еще как я могу узнать сколько раз нажата клавиша.Читал про это сообщени, но не понял: чтобы узнать сколько раз нажата клавиша нужно просмотреть первые 15 бит lparam и перевести полученное число в десятичную систему??
Заранее спасибо.
bloodman (2003-07-15 13:34:00) [1]
Да, наверное и так можно. Я тоже так пытался , только вместо if GetKeyState(VK_SHIFT) < 0 then поставил if (GetKeyState(VK_SHIFT) and $80) <> 0 then и у меня ничего не заработало. Поэтому и взал
GetKeyboardState.
Юрий Зотов (2003-07-15 06:15:00) [2]
Проще можно:
if GetKeyState(VK_SHIFT) < 0 then
Shift on
else
Shift off
bloodman (2003-07-15 01:53:00) [3]
Спасибо , но я уже сам додумался :) Вот мой вариант:
GetKeyboardState(KeyState);
IF ((KeyState[VK_Shift] and $80) <> 0) then
Shift on
else
Shift off
Dw (2003-07-14 23:53:00) [4]
Я вот так делаю:
.....
Caps, Shift: byte;
......
Caps:=(Lo(GetKeyState(VK_CAPITAL)));
Shift:=(Byte(Hi(GetKeyState(VK_SHIFT)) xor $FF + 1));
1 - клавиша нажата, 0 - не нажата
Может и извратно :) , но работает.