안녕하세요... 델파이 초보입니다.
저는여 Hooking을 예제를 통해서 해봤는데요...
이것은 THookForm 안에서의 훅킹만 되더라구요..ㅠㅠ
알고싶은것은 Windows상에 돌아다니는 모든 메시지를 알고싶습니다.
델파이 고수님들 혹시 알면 갈쳐주십시요...많은답변 부탁드릴께요...^^
unit HookMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
THookForm = class(TForm)
GroupBox1: TGroupBox;
LogList: TListBox;
SendBtn: TButton;
DoLog: TCheckBox;
ExitBtn: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure SendBtnClick(Sender: TObject);
procedure ExitBtnClick(Sender: TObject);
private
{ Private declarations }
function AppWindowsHook(var Message: TMessage): Boolean;
public
{ Public declarations }
end;
var
HookForm: THookForm;
implementation
{$R *.dfm}
procedure THookForm.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(AppWindowsHook);
//Application.HookSynchronizeWakeup
end;
procedure THookForm.FormDestroy(Sender: TObject);
begin
Application.UnhookMainWindow(AppWindowsHook);
//Application.UnhookSynchronizeWakeup;
end;
function THookForm.AppWindowsHook(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.
|