Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо