Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.05;
Скачать: CL | DM;

Вниз

Всё скрытое когда-нибудь становится явным....   Найти похожие ветки 

 
Митяй2 ©   (2002-07-06 09:33) [0]

Мастера, подскажите как в ловушке клавы
определить что произошло:
- нажали клавишу?
- отпустили клавишу?
- идёт повтор символов, когда клавиша нада

function Key_Hook(Code: integer; wParam: word; lParam: Longint): Longint;stdcall; export;
begin
// если Code>=0, то ловушка может обработать событие
if (Code >= 0) then
begin
if wParam=VK_CONTROL then // Отлавливаем только Ctrl
Begin
if (lParam and KF_UP)=KF_UP then // код отпускания (НЕ ПРОКАНЫВАЕТ!!!!!!!!!!)
begin
....

....

....


 
Митяй2 ©   (2002-07-06 09:48) [1]

Опечатка - идёт повтор символов, когда клавиша нада
Нужно читать - идёт повтор символов, когда клавиша нажата


 
Митяй2 ©   (2002-07-06 11:33) [2]

Всё МАСТЕРА, можете не отвечать сам разобрался методом научного тыка.

В lParam 2-ой байт (нумерация с 0) - scan code,
а биты 6 и 7 в 3-ем байте отвечают за происходящее.

нажатие

if (lParam and $40000000)=0 then <нажатие>
1 1101 0000 0000 0000 0001 (Ctrl, scan=11101)
10 0000 0000 0000 0000 0001 ("d" , scan=100000)


отпускание

if (lParam and $80000000)=$80000000 then <отпускание>
1100 0000 0001 1101 0000 0000 0000 0001
1100 0000 0010 0000 0000 0000 0000 0001



повтор
if (lParam and $80000000)=0 AND (lParam and $40000000)=$40000000 then <повтор>
100 0000 0001 1101 0000 0000 0000 0001
100 0000 0010 0000 0000 0000 0000 0001


 
Митяй2 ©   (2002-07-06 11:34) [3]

И заходите:

http://altnet.ru/~rus

НЕ ПОЖАЛЕЕТЕ! Посмеётесь от души!



Страницы: 1 вся ветка

Текущий архив: 2002.09.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
7-14317
МитяЙ2
2002-06-22 09:57
2002.09.05
Клава...


14-14261
Unhandled Exception
2002-08-11 20:23
2002.09.05
Событийная архитектура в Builder/Delphi


1-13988
spROOT13
2002-08-25 21:56
2002.09.05
Командная строка


14-14267
BAY
2002-08-08 22:08
2002.09.05
freebsd


1-14075
c0pyc@t
2002-08-27 08:36
2002.09.05
Как узнать номер винта??