Code: |
library Hookdemo; uses Beeper in '\DELDEMOS\HOOKDEMO\BEEPER.PAS'; exports SetHook index 1, UnHookHook index 2, HookProc index 3; begin HookedAlready:=False; end. |
, где beeper.pas содержит следующий код:
Code: |
unit Beeper;
interface
uses Wintypes, Winprocs, Messages;
function SetHook: Boolean; export; function UnHookHook: Boolean; export; function HookProc(Code: integer; wParam: Word; lParam: Longint): Longint; export;
var HookedAlready: Boolean;
implementation
var ourHook: HHook;
function SetHook: Boolean; begin if HookedAlready then exit; ourHook := SetWindowsHookEx(WH_MOUSE, HookProc, HInstance, 0); HookedAlready := True; end;
function UnHookHook: Boolean; begin UnHookWindowsHookEx(ourHook); HookedAlready := False; end;
function HookProc(Code: integer; wParam: Word; lParam: Longint): Longint; begin if (wParam = WM_LBUTTONDOWN) then MessageBeep(0); result := CallNextHookEx(ourHook, Code, wParam, lParam); end;
end. |
Теперь, при вызове из приложения функции SetHook, при каждом нажатии левой кнопки мыши будет раздаваться сигнал - до тех пор, пока вы не вызовете функцию UnHookHook. В действующем приложении возвращаемое функцией CallNextHookEx значение < 0 сведетельствует об отсутствии манипуляций с мышью.
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!