1,183
社区成员
发帖
与我相关
我的任务
分享
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFrm2 = class(TForm)
lbl1: TLabel;
procedure FormCreate(Sender: TObject);
private
public
procedure WndProc(var Msg: TMessage); override;
end;
var
Frm2: TFrm2;
implementation
{$R *.dfm}
{ TFrm2 }
procedure TFrm2.FormCreate(Sender: TObject);
begin
Self.FormStyle := fsStayOnTop;
end;
procedure TFrm2.WndProc(var Msg: TMessage);
begin
inherited;
if Msg.Msg = WM_KEYDOWN then
begin
lbl1.Caption := IntToStr(Msg.WParam);
end;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FHookFlag: Boolean;
procedure InstallHooks;
procedure UnHooks;
public
{ Public declarations }
end;
var
Form1: TForm1;
function InstallHook(HWindow, SWindow: LongWORD): Boolean; stdcall;
external 'dllProj.dll';
procedure UnHook; stdcall; external 'dllProj.dll';
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
InstallHooks;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
UnHooks;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHooks;
end;
procedure TForm1.InstallHooks;
var
HWindow: HWND;
begin
HWindow := FindWindow('TFrm2', 'frm2');
InstallHook(HWindow, Form1.Handle);
FHookFlag := True;
end;
procedure TForm1.UnHooks;
begin
if FHookFlag then
begin
UnHook;
FHookFlag := False;
end;
end;
end.