unit HookForm_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
THookForm =
class(TForm)
Label1: TLabel;
AltLbl: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure OnUserMsg(
var Msg: TMessage);
message WM_USER+10;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
HookForm: THookForm;
InstallHook:
function(AHWND: HWND): Boolean;
stdcall;
UninstallHook:
function: Boolean;
stdcall;
lib: Cardinal;
implementation
{$R *.dfm}
function ZweiHoch(X: Integer): Integer;
begin
Result := Round(Ldexp(1, X));
end;
procedure THookForm.OnUserMsg(
var Msg: TMessage);
begin
// Label1.Caption := IntToStr(Msg.LParam);
if (Msg.lParam
and Zweihoch(24)) <> ZweiHoch(24)
then
HookForm.Label1.Caption := IntToStr(Msg.wParam)+'
- '+Chr(Msg.wParam);
HookForm.AltLbl.Visible := (msg.lParam
and ZweiHoch(29)) = ZweiHoch(29);
end;
procedure THookForm.FormCreate(Sender: TObject);
begin
lib := LoadLibrary('
HookDll.dll');
if lib <> INVALID_HANDLE_VALUE
then begin
@InstallHook := GetProcAddress(lib, '
InstallHook');
@UnInstallHook := GetProcAddress(lib, '
UnInstallHook');
InstallHook(HookForm.Handle);
end;
end;
procedure THookForm.FormDestroy(Sender: TObject);
begin
UnInstallHook;
end;
end.