Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Небольшой вопросик по ф-ии ловушки на клаву


Автор: OlafShadow 21.6.2006, 14:05
Здравствуйте, небольшой вопросик по приведенной ниже простенькой ф-ии ловушки на клаву:


Код

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, может кто-нибудь подскажет почему?  

Автор: bems 21.6.2006, 14:20
Цитата(OlafShadow @  21.6.2006,  14:05 Найти цитируемый пост)
В документации указано, что в случае (Code = HC_ACTION | HC_NOREMOVE) если возвращаемое значение будет = 0, то windows передаст сообщение в целевое окно, ПРОПУСТИВ ЕГО ЧЕРЕЗ ОСТАВШИЕСЯ ЛОВУШКИ В ЦЕПОЧКЕ

Цитата

Windows to pass the message to the target window procedure, bypassing the remaining procedures in the chain, the return value must be zero. 

"bypassing the remaining procedures in the chain" означает не "пропустив через процедуры", а "пропустив процедуры" 

Автор: OlafShadow 21.6.2006, 19:02
Под документацией я имел ввиду имеющийся у меня справочник(Ричард Саймон Windows 2000 API). Ну если у Маркса так, то пошел выбрасывать справочник smile. 

Автор: OlafShadow 21.6.2006, 21:25
В продолжение темы: кто-нибудь знает почему вышеупомянутая ф-я на одно однократное нажатие клавиши (имеется ввиду нажать и сразу отпустить) вызывается 4 раза - сначала 2 с совершенно одинаковыми wParam и lParam, и затем 2, где у lParam меняются на единицы 30 и 31 биты(ну это понятно). Я думал должно быть всего 2 вызова - один на нажатие и один на отпускание клавиши? 

Автор: OlafShadow 21.6.2006, 21:44
Извиняюсь, все правильно, ф-я вызывается 2 раза, стормозил, 2 раза ловушку ставил. 

Автор: bems 22.6.2006, 08:15
Цитата(OlafShadow @  21.6.2006,  19:02 Найти цитируемый пост)
Ну если у Маркса так, то пошел выбрасывать справочник
В MSDN. Хотя, невелика разница  smile 
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)