Так вот, если я эту библиотеку компилирую в Лазарусе, то потом присоединяя ее в другой программе (форма + две кнопки для установки и снятия ловушки), получаю, что когда мышь находится в пределах формы нажатия кнопок перехватываются, а если мышь выходит за границы формы, события не перехватываются.
Откомпилировал эту библиотеку в Делфи, присоединил, перехватывается на ура.
- Код: Выделить всё
- library project1;
 {$mode delphi}
 {$H+}
 uses
 windows,messages,sysutils;
 var
 H : hHook = 0;
 function hook(code:integer; wParam:integer; lParam : integer): integer stdcall;
 begin
 if code >= 0 then // ловушка может обработать событие
 begin
 if (wParam=WM_LBUTTONUP) then// Если нажата левая кнопка мыши,
 begin
 beep;
 end;
 if (wParam=WM_MBUTTONUP)then// Если нажата средняя кнопка мыши,
 begin
 beep;
 end
 end;
 
 result := CallNextHookEx(H, code, wParam, lParam);
 end;
 // Процедура установки ловушки
 procedure sethook;
 begin
 H:= SetWindowsHookEx(WH_MOUSE, @hook, hInstance, 0);
 end;
 // Процедура удаления ловушки
 procedure removehook;
 begin
 UnhookWindowsHookEx(H);
 end;
 // Экспорт процедур установки и удаления hook'a
 exports
 sethook,
 removehook;
 end.


