Pa, dobro, evo kako izgleda taj hook, pa mi ti reci da li treba da pravim deljenu memoriju... Moje mišljenje je da nema potrebe, jer ja taj handle prosledim odma na početku.
Code:
library kbHook;
uses
FastShareMem,
Main in 'Main.pas';
{$R *.res}
end.
Code:
unit Main;
interface
uses
FastShareMem, Windows, Messages;
function InstallHook(HWND: THandle): Boolean; stdcall;
function KeyboardProc(Code, wParam, lParam: Integer): Integer;
function UninstallHook: Boolean; stdcall;
var
HookHandle: HHOOK;
WndHandle: THandle;
exports
InstallHook,
UninstallHook;
implementation
function InstallHook(HWND: THandle): Boolean; stdcall;
begin
Result := FALSE;
if (HookHandle = 0) and (HWND <> INVALID_HANDLE_VALUE)
then begin
HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0);
WndHandle := HWND;
Result := TRUE;
end;
end;
function KeyboardProc(Code, wParam, lParam: Integer): Integer;
begin
Result := CallNextHookEx(HookHandle, Code, wParam, lParam);
if Code >= HC_ACTION
then begin
SendMessage(WndHandle, 18000, 0, 0);
// Ovo je samo za probu.
end;
end;
function UninstallHook: Boolean; stdcall;
begin
Result := UnhookWindowsHookEx(HookHandle);
HookHandle := 0;
end;
end.
Yea, and from this day forth, a surface must be locked before beast or man can draw upon it!