![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Здравствуйте, небольшой вопросик по ф-ии ловушки на клаву [D5, Win95/98, WinXP]
trubin © (2006-06-21 14:54:00)Здравствуйте, небольшой вопросик по приведенной ниже простенькой ф-ии ловушки на клаву:
function KeybHookProc(Code: Integer; wParam, lParam: Longint):Longint; stdcall;
begin
case Code of
HC_ACTION: Result:=0;
HC_NOREMOVE: Result:=0;
else
Result:=CallNextHookEx(gGlobalData^.HookHandle, code, wParam, lParam);
end;
end;
В документации указано, что в случае (Code = HC_ACTION | HC_NOREMOVE) если возвращаемое значение будет = 0, то windows передаст сообщение в целевое окно, ПРОПУСТИВ ЕГО ЧЕРЕЗ ОСТАВШИЕСЯ ЛОВУШКИ В ЦЕПОЧКЕ, но у меня почему-то следующие ловушки не вызываются, вызов слуедующей ловушки происходит если в любом случае вызывать CallNextHookEx, может кто-нибудь подскажет почему?
trubin (2006-06-21 22:44:00) [1]Извиняюсь, все правильно, ф-я вызывается 2 раза, стормозил, 2 раза ловушку ставил.
trubin (2006-06-21 22:26:00) [2]В продолжение темы: кто-нибудь знает почему вышеупомянутая ф-я на одно однократное нажатие клавиши (имеется ввиду нажать и сразу отпустить) вызывается 4 раза - сначала 2 с совершенно одинаковыми wParam и lParam, и затем 2, где у lParam меняются на единицы 30 и 31 биты(ну это понятно). Я думал должно быть всего 2 вызова - один на нажатие и один на отпускание клавиши?
Игорь Шевченко (2006-06-21 15:30:00) [3]
> может кто-нибудь подскажет почему?
Согласно документации.
"Calling the CallNextHookEx function to chain to the next hook procedure is optional, but it is highly recommended; otherwise, other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result. You should call CallNextHookEx unless you absolutely need to prevent the notification from being seen by other applications. "