Так вот, если я эту библиотеку компилирую в Лазарусе, то потом присоединяя ее в другой программе (форма + две кнопки для установки и снятия ловушки), получаю, что когда мышь находится в пределах формы нажатия кнопок перехватываются, а если мышь выходит за границы формы, события не перехватываются.
Откомпилировал эту библиотеку в Делфи, присоединил, перехватывается на ура.
- Код: Выделить всё
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.