|
unit HookMain;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type THookForm = class(TForm) SendBtn: TButton; GroupBox1: TGroupBox; LogList: TListBox; DoLog: TCheckBox; ExitBtn: TButton; procedure SendBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ExitBtnClick(Sender: TObject); private function AppWindowHook(var Message: TMessage): Boolean; end;
var HookForm: THookForm;
implementation
{$R *.DFM}
procedure THookForm.FormCreate(Sender: TObject); begin Application.HookMainWindow(AppWindowHook); end;
procedure THookForm.FormDestroy(Sender: TObject); begin Application.UnhookMainWindow(AppWindowHook); end;
function THookForm.AppWindowHook(var Message: TMessage): Boolean; const LogStr = 'Message ID: $%x, WParam: $%x, LParam: $%x'; begin Result := True; if DoLog.Checked then with Message do LogList.Items.Add(Format(LogStr, [Msg, WParam, LParam])); end;
procedure THookForm.SendBtnClick(Sender: TObject); begin SendMessage(Application.Handle, WM_NULL, 0, 0); end;
procedure THookForm.ExitBtnClick(Sender: TObject); begin Close; end;
end.
|