Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Небольшой вопросик по ф-ии ловушки на клаву 
:(
    Опции темы
OlafShadow
Дата 21.6.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.6.2006
Где: Архангельская обл

Репутация: нет
Всего: нет



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


Код

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, может кто-нибудь подскажет почему?  
PM MAIL ICQ   Вверх
bems
Дата 21.6.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(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" означает не "пропустив через процедуры", а "пропустив процедуры" 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
OlafShadow
Дата 21.6.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.6.2006
Где: Архангельская обл

Репутация: нет
Всего: нет



Под документацией я имел ввиду имеющийся у меня справочник(Ричард Саймон Windows 2000 API). Ну если у Маркса так, то пошел выбрасывать справочник smile. 
PM MAIL ICQ   Вверх
OlafShadow
Дата 21.6.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.6.2006
Где: Архангельская обл

Репутация: нет
Всего: нет



В продолжение темы: кто-нибудь знает почему вышеупомянутая ф-я на одно однократное нажатие клавиши (имеется ввиду нажать и сразу отпустить) вызывается 4 раза - сначала 2 с совершенно одинаковыми wParam и lParam, и затем 2, где у lParam меняются на единицы 30 и 31 биты(ну это понятно). Я думал должно быть всего 2 вызова - один на нажатие и один на отпускание клавиши? 
PM MAIL ICQ   Вверх
OlafShadow
Дата 21.6.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 21.6.2006
Где: Архангельская обл

Репутация: нет
Всего: нет



Извиняюсь, все правильно, ф-я вызывается 2 раза, стормозил, 2 раза ловушку ставил. 
PM MAIL ICQ   Вверх
bems
Дата 22.6.2006, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



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


--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.