Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Мышиное колесо. |
Философия, технологии, алгоритмы! |
|
Опции темы |
06.10.2005, 18:32 | #1 |
Форумец
Сообщений: 38
Регистрация: 03.06.2005
Возраст: 46
Не в сети |
Мышиное колесо.
Здравствуйте!!!
Возникла такая проблемулина. Необходимо сочинить прогу которая должна назничить выполнение некоторого действия Скроллеру. Тонкость еще в том, что функции моей проги должны выполняться в момент, когда пользователь работает с другой программой. Я сочинил такую DLLку. library Lib; uses SysUtils,windows, messages, Classes; {$R *.res} var // дескриптор ловушки HMouse: hHook = 0; //ловушка function Skroll(code: integer; wParam: integer; lParam: integer): integer stdcall; begin if wParam=WM_MOUSEWHEEL then beep(300,300); Result := CallNextHookEx(HMouse, code, wParam, lParam); end; procedure StartMouse; //Установка ловушки begin if HMouse = 0 then HMouse := SetWindowsHookEx(WH_MOUSE, @Skroll, hInstance, 0); if HMouse = 0 then MessageBox(0, 'Ловушка не установилась!', 'Ошибка', mb_Ok); end; exports Skroll; exports StartMouse; begin end. Засада в том, что данная ловушка замечтательно ловит вращение скроллера, но мне еще необходимо знать в какую сторону он вертится. Подскажите как отловить направление вращения???? |
07.10.2005, 17:43 | #2 |
бибизьян
Сообщений: 3,031
Регистрация: 17.02.2004
Не в сети |
MSDN:
wParam The high-order word indicates the distance the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. 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. |