Вопросы обмена практически решены и можно дописать функцию 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. |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!