![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Mouse hook [D5, Win2k]
Владислав © (2002-06-04 12:44:00)Приветствую, Мастера.
Каким образом в хуке на события мыши узнать в какую сторону поворачивается колесо мыши?
Владислав (2002-06-07 06:29:00) [1]> Almaz © (07.06.02 00:37)
Огромное спасибо. К сожалению, в моей справке MS SDK это не описано. Наверное нужно ее как-то обновить :).
Спасибо всем за ответы.
Almaz (2002-06-07 00:37:00) [2]
> Владислав © (06.06.02 07:09)
Проблема решается но только в Win2k. В Win2k в hook"e lParam указывает не на структуру TMouseHookStruct а на структуру MouseHookStructEx. Правда, в D5 она не описана, так что придется самому:
type
TMouseHookStructEx = packed record
MouseHookStruct: TMouseHookStruct;
mouseData: DWORD;
end;
PMouseHookStructEx = ^TMouseHookStructEx;
function Hook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
if Code >= 0 then
begin
if wParam = WM_MOUSEWHEEL then
begin
if ShortInt(HIWORD(PMouseHookStructEx(lParam)^.MouseData)) > 0 then
MessageBox(0, "Wheel UP", "Info", MB_OK) else
MessageBox(0, "Wheel DOWN", "Info", MB_OK);
end
end;
Result := CallNextHookEx(Data^.OldHook, Code, wParam, lParam)
end;
Удачи.
Владислав (2002-06-06 07:09:00) [3]> cdaDmitriy © (05.06.02 17:26)
"так в чем вопрос я не понял"
Каким образом в хуке на события мыши узнать в какую сторону поворачивается колесо мыши?
Это информация из хука. Колесо по очереди поворачивается то в одну то в другую сторону. Нет никакой разницы.
Message (wParam): WM_MOUSEWHEEL; X = 781; Y = 379; WND = 722308; Hit Test Code = 0; Extra Info = 0
Message (wParam): WM_MOUSEWHEEL; X = 781; Y = 379; WND = 722308; Hit Test Code = 0; Extra Info = 0
Message (wParam): WM_MOUSEWHEEL; X = 781; Y = 379; WND = 722308; Hit Test Code = 0; Extra Info = 0
Message (wParam): WM_MOUSEWHEEL; X = 781; Y = 379; WND = 722308; Hit Test Code = 0; Extra Info = 0
Я понимаю, что узнать в какую сторону крутится колесо мыши можно в обработчике сообщений Windows, например:
procedure WMMouseWheel(var Message: TMessage); message WM_MOUSEWHEEL;
В таком обработчике действительно можно это определить, но мне надо в хуке.
>Кто-то из толпы2 (05.06.02 23:35)
А еще какая-нибудь полезная информация есть?
Мастера, подскажите пожалуйста.
Кто-то из толпы2 (2002-06-05 23:35:00) [4]2 Владислав
Ты сначала разберись с хуками вообще и WH_MOUSE в частности и тогда поймешь, что тебе дело говорят. А пока иди читать хелп. Только внимательно читай, так сказать от корки до корки (читать ты судя по всему вроде умеешь).
cdaDmitriy (2002-06-05 17:26:00) [5]так в чем вопрос я не понял
Владислав (2002-06-05 12:26:00) [6]cdaDmitriy, я умею, а ты?
Я уже поставил хук и посмотрел, поэтому вопрос задаю.
cdaDmitriy (2002-06-05 11:37:00) [7]Владислав © ТЫ ЧИТАТЬ УМЕЕШЬ ?
поставь хук
поверни в одну сторону и посмотри значение
потом в другую
Владислав (2002-06-05 10:25:00) [8]Мне нужно ловить сообщения мыши и в чужих программах. Для этого я создал хук. Если я не ошибаюсь, то ваши ответы предполагают обрабатывать сообщения от мыши, но я могу делать это только в своей программе.
Есть еще какие-нибудь соображения?
cdaDmitriy (2002-06-05 09:41:00) [9]поставь хук
поверни в одну сторону и посмотри значение
потом в другую
они ( значения ) отличаются : 120 и 65416 (-120)
( ? z я не уверен точно возможно для разных компонетов разные )
Song (2002-06-04 13:23:00) [10]WM_MOUSEWHEELUP
WM_MOUSEWHEELDOWN