아래와 같이 소스를 만들었는데 이밴트가 수행되지 않네요.. 왜그런걸까요.
이 Dll을 notepad에 inject하니 injected 메시지는 뜨는데 ttimer가 동작하지 않습니다.
library Project1;
uses
Windows,
SysUtils,
Classes,
Dialogs,
ExtCtrls;
{$R *.res}
type
TMyTimer = class(TTimer)
public
Procedure DoTimer(Sender: TObject);
end;
var
Timer1: TMyTimer;
procedure EntryPoint(Event: DWord);
begin
// Create an instance of TMyTimer
case Event of
DLL_PROCESS_ATTACH:
begin
showmessage ('injected');
Timer1 := TMyTimer.Create(nil);
Timer1.OnTimer := Timer1.DoTimer;
Timer1.Interval := 1000;
Timer1.Enabled := true;
end;
// Free timer on deattach DLL
DLL_PROCESS_DETACH:
begin
Timer1.Free;
showmessage ('unloaded');
end;
end;
end;
procedure TMyTimer.DoTimer(Sender: TObject);
begin
showmessage ('Timer!');
end;
begin
Dllproc := @EntryPoint;
EntryPoint(DLL_PROCESS_ATTACH);
end.
|