Здравствуйте!!!
Возникла такая проблемулина.
Необходимо сочинить прогу которая должна назничить выполнение некоторого действия Скроллеру. Тонкость еще в том, что функции моей проги должны выполняться в момент, когда пользователь работает с другой программой.
Я сочинил такую 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.
Засада в том, что данная ловушка замечтательно ловит вращение скроллера, но мне еще необходимо знать в какую сторону он вертится.
Подскажите как отловить направление вращения????
[Ответ]
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.
[Ответ]