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 сведетельствует об отсутствии манипуляций с мышью.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить