Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

Mouse hook   Найти похожие ветки 

 
Владислав   (2002-06-04 12:44) [0]

Приветствую, Мастера.

Каким образом в хуке на события мыши узнать в какую сторону поворачивается колесо мыши?


 
Song   (2002-06-04 13:23) [1]

WM_MOUSEWHEELUP
WM_MOUSEWHEELDOWN


 
cdaDmitriy   (2002-06-05 09:41) [2]

поставь хук
поверни в одну сторону и посмотри значение
потом в другую

они ( значения ) отличаются : 120 и 65416 (-120)
( ? z я не уверен точно возможно для разных компонетов разные )


 
Владислав   (2002-06-05 10:25) [3]

Мне нужно ловить сообщения мыши и в чужих программах. Для этого я создал хук. Если я не ошибаюсь, то ваши ответы предполагают обрабатывать сообщения от мыши, но я могу делать это только в своей программе.
Есть еще какие-нибудь соображения?


 
cdaDmitriy   (2002-06-05 11:37) [4]

Владислав © ТЫ ЧИТАТЬ УМЕЕШЬ ?
поставь хук
поверни в одну сторону и посмотри значение
потом в другую



 
Владислав   (2002-06-05 12:26) [5]

cdaDmitriy, я умею, а ты?
Я уже поставил хук и посмотрел, поэтому вопрос задаю.


 
cdaDmitriy   (2002-06-05 17:26) [6]

так в чем вопрос я не понял


 
Кто-то из толпы2   (2002-06-05 23:35) [7]

2 Владислав
Ты сначала разберись с хуками вообще и WH_MOUSE в частности и тогда поймешь, что тебе дело говорят. А пока иди читать хелп. Только внимательно читай, так сказать от корки до корки (читать ты судя по всему вроде умеешь).


 
Владислав   (2002-06-06 07:09) [8]

> 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)

А еще какая-нибудь полезная информация есть?

Мастера, подскажите пожалуйста.


 
Almaz   (2002-06-07 00:37) [9]


> Владислав © (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-07 06:29) [10]

> Almaz © (07.06.02 00:37)

Огромное спасибо. К сожалению, в моей справке MS SDK это не описано. Наверное нужно ее как-то обновить :).

Спасибо всем за ответы.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
1-35327
GTA 3
2002-07-29 21:03
2002.08.12
Сохранение строки в файл, НО в опр. строку по счёту


4-35492
Belov
2002-06-04 12:39
2002.08.12
Создание ярлыков


4-35508
Sniffer
2002-06-04 15:12
2002.08.12
Форма


7-35470
vlad_ri
2002-05-17 15:13
2002.08.12
Матричный принтер, режим


1-35274
Evgeniy_MF
2002-07-31 15:27
2002.08.12
Помогите вытащить путь..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский