type
TADOQueryHook = class(TADOQuery);
function GetSetActiveAddr : Pointer;
begin
Result := @TADOQueryHook.SetActive;
end;
//用GetSetActiveAddr得到SetActive过程的地址,然后用InLine_HOOK,新入口格式如下:procedure NewSetAvtiveProc(Self : TDataSet; Value : Boolean);
begin
if Value and (PPointer(Self)^ = TADOQuery) then begin
ShowMessage(TADOQuery(Self).SQL.Text);
end;
end;
TADOQueryHook = class(TADOQuery);
function GetSetActiveAddr : Pointer;
begin
Result := @TADOQueryHook.SetActive;
end;
//用GetSetActiveAddr得到SetActive过程的地址,然后用InLine_HOOK,新入口格式如下:procedure NewSetAvtiveProc(Self : TDataSet; Value : Boolean);
begin
if Value and (PPointer(Self)^ = TADOQuery) then begin
ShowMessage(TADOQuery(Self).SQL.Text);
end;
end;
入行太浅没看懂,给分结贴