Содержание материала

Вопросы обмена практически решены и можно дописать функцию KeyboardProc. После этого код DLL тоже можно привести полностью:

Code:

library HookDLL;

 

uses Windows, Exchange;

 

function KeyboardProc(Code: Integer; wParam: WPARAM;

lParam: LPARAM): Integer; stdcall;

begin

if Code < 0 then

   Result := CallNextHookEx(CommonArea^.HookHandle, Code, wParam,

     lParam)

else

begin

   PostMessage(CommonArea^.FormHandle, Exchange.WMKeyHook, wParam,

     lParam );

   Result := CallNextHookEx(CommonArea^.HookHandle, Code, wParam,

     lParam );

end;

end;

 

function SetHook(Activate : BOOL): BOOL; stdcall; export;

begin

Result := FALSE;

if Activate then

begin

   CommonArea^.HookHandle := SetWindowsHookEx(WH_KEYBOARD,

     @KeyboardProc, hInstance, 0);

   Result := (CommonArea^.HookHandle <> 0);

end

else

begin

   if CommonArea^.HookHandle <> 0 then

   begin

     Result := UnhookWindowsHookEx(CommonArea^.HookHandle);

     if Result then

       CommonArea^.HookHandle := 0;

   end;

end;

end;

 

exports

SetHook;

 

begin

end.

 

 

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

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

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

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


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