|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Хук WH_JOURNALRECORD и WM_MOUSEWHEEL
Здравствуйте дорогие форумчане
Кто может помочь с простой проблемой: надо узнать знак Delta (т.е. в какую сторону крутится колесико) при создании хука WH_JOURNALRECORD. Вот мой код: Код:
function JournalProc(nCode, wParam: Integer; var EventStrut: TEventMsg): Integer; stdcall; var X, Y: Integer; Delta: Integer; begin Result := CallNextHookEx(JHook, nCode, wParam, Longint(@EventStrut)); if(nCode < 0) then Exit; if(nCode = HC_SYSMODALON) then Exit; if(nCode = HC_ACTION) then begin Case EventStrut.message of ... WM_MOUSEWHEEL: begin X := EventStrut.paramL; Y := EventStrut.paramH; Delta := ??? // пытался получить так: Delta := SmallInt(HiWord(EventStrut.paramH) div WHEEL_DELTA; но результат всегда равен "0" end; end; // Case end; С ловушкой WH_MOUSE_LL, либо же просто WH_MOUSE все более менее понятно (Delta := (SmallInt(HiWord(MS.mouseData)) div WHEEL_DELTA)). Делал по MSDN: If the message is WM_MOUSEWHEEL, the high-order word of this member is the wheel delta. The low-order word is reserved. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as WHEEL_DELTA, which is 120 но этот метод не подходит. Подскажите, кто может Заранее, спасибо. Помогаю за Спасибо |
#2
|
||||
|
||||
вроде как должно быть так
Код:
Delta := SmallInt(HiWord(wParam)) div WHEEL_DELTA; Понять, что хочет заказчик - бесценно, ведь он платит MasterCard |
Этот пользователь сказал Спасибо cotseec за это полезное сообщение: | ||
v1s2222 (30.05.2012)
|
#3
|
||||
|
||||
Если хук WH_MOUSE_LL или WH_MOUSE, то именно так.
Но вот при хуке WH_JOURNALRECORD wParam всегда равен нулю, так что не подходит. Но спасибо за попытку Вот выдержка из справки: The lParam parameter contains a pointer to a TEventMsg structure containing information on the message removed from the system message queue. The wParam is not used. Помогаю за Спасибо Последний раз редактировалось v1s2222, 30.05.2012 в 22:40. |
#4
|
||||
|
||||
Ответ нашел: http://support.microsoft.com/KB/186942
Т.е. "WM_MOUSEWHEEL Delta Values Not Supported by Journal Hooks". Это печально... Помогаю за Спасибо |