Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Создание мышиного перехватчика

- Чувствую себя как компьютерная мышь: ползаю по ковру и в животе крутит.


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 содержит следующий код:


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

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay