[Only registered and activated users can see links. Click Here To Register...]
soweit ich das sehe wird bei Button1Click alles von der PointerScan options form in variablen geladen, aber wo wird jetzt die funktion zum scanen aufgerufen?
also ich habe jetzt das gefunden
Code:
procedure TMainForm.Pointerscanforthisaddress1Click(Sender: TObject);
var address: ptrUint;
count: dword;
j: integer;
check: boolean;
i: integer;
findpointeroffsets: boolean;
frmPointerScanner: TfrmPointerScanner;
memrec: TMemoryRecord;
begin
if addresslist.selectedRecord <> nil then
begin
memrec:=addresslist.selectedRecord;
findpointeroffsets:=false;
address:=memrec.GetRealAddress;
begin
//default
frmPointerScanner:=tfrmpointerscanner.create(self);
frmPointerScanner.show;
if frmpointerscannersettings=nil then //used over and over
frmpointerscannersettings:=tfrmpointerscannersettings.create(self);
frmpointerscannersettings.edtAddress.text:=inttohex(address,8);
if findpointeroffsets then
begin
//create and fill in the offset list
frmpointerscannersettings.cbMustEndWithSpecificOffset.checked:=true;
TOffsetEntry(frmpointerscannersettings.offsetlist[0]).offset:=memrec.pointeroffsets[0];
for i:=1 to length(memrec.pointeroffsets)-1 do
begin
frmpointerscannersettings.btnAddOffset.Click;
TOffsetEntry(frmpointerscannersettings.offsetlist[i]).offset:=memrec.pointeroffsets[i];
end;
end;
frmPointerScanner.Method3Fastspeedandaveragememoryusage1.Click;
end;
end;
end;
und darauf hin dann das
Code:
procedure Tfrmpointerscanner.Method3Fastspeedandaveragememoryusage1Click(
Sender: TObject);
var
i: integer;
begin
start:=now;
if frmpointerscannersettings=nil then
frmpointerscannersettings:=tfrmpointerscannersettings.create(nil);
if frmpointerscannersettings.Visible then exit; //already open, so no need to make again
if vm<>nil then
frmpointerscannersettings.cbreuse.Caption:='Reuse memory copy from previous scan';
if frmpointerscannersettings.Showmodal=mrok then
begin
new1.click;
tvResults.Visible:=false;
pgcPScandata.Visible:=false;
open1.Enabled:=false;
new1.enabled:=false;
save1.Enabled:=false;
rescanmemory1.Enabled:=false;
incorrectresult:=0;
continued:=0;
pointersfound:=0;
label1.Caption:='Matches found:';
label2.Left:=label1.Left+label1.Width+5;
timer2.Enabled:=true;
treenodeswithchildrenpos:=0;
matchednodespos:=0;
//initialize array's
setlength(dissectedpointersLevelpos,frmpointerscannersettings.maxlevel+1);
setlength(dissectedpointersLevel,frmpointerscannersettings.maxlevel+1);
setlength(dissectedpointersLevelMREWS,frmpointerscannersettings.maxlevel+1);
for i:=0 to length(dissectedpointersLevelpos)-1 do
dissectedpointersLevelpos[i]:=0;
for i:=0 to length(dissectedpointersLevelMREWS)-1 do
dissectedpointersLevelMREWS[i]:=TMultiReadExclusiveWriteSynchronizer.create;
for i:=0 to length(dissectedpointerslevel)-1 do
setlength(dissectedpointerslevel[i],1024*1024); //1mb default
setlength(possiblepathslevelpos,frmpointerscannersettings.maxlevel+1);
setlength(possiblepathslevel,frmpointerscannersettings.maxlevel+1);
setlength(possiblepathslevelMREWS,frmpointerscannersettings.maxlevel+1);
for i:=0 to length(possiblepathslevelpos)-1 do
possiblepathslevelpos[i]:=0;
for i:=0 to length(possiblepathslevelMREWS)-1 do
possiblepathslevelMREWS[i]:=TMultiReadExclusiveWriteSynchronizer.create;
for i:=0 to length(possiblepathslevel)-1 do
setlength(possiblepathslevel[i],1024*1024); //1mb default
//default scan
staticscanner:=TStaticscanner.Create(true);
try
staticscanner.reverse:=frmpointerscannersettings.rbreverse.checked;
staticscanner.start:=frmpointerscannersettings.start;
staticscanner.stop:=frmpointerscannersettings.Stop;
staticscanner.filterstart:=frmpointerscannersettings.FilterStart;
staticscanner.filterstop:=frmpointerscannersettings.FilterStop;
if staticscanner.reverse then
begin
staticscanner.unalligned:=not frmpointerscannersettings.CbAlligned.checked;
pgcPScandata.ActivePage:=tsPSReverse;
tvRSThreads.Items.Clear;
end
else
begin
staticscanner.unalligned:=frmpointerscannersettings.unalligned;
pgcPScandata.ActivePage:=tsPSDefault;
end;
staticscanner.codescan:=frmpointerscannersettings.codescan;
staticscanner.staticonly:=frmpointerscannersettings.cbStaticOnly.checked;
staticscanner.automatic:=true;
staticscanner.automaticaddress:=frmpointerscannersettings.automaticaddress;
staticscanner.sz:=frmpointerscannersettings.structsize;
staticscanner.sz0:=frmpointerscannersettings.level0structsize;
staticscanner.maxlevel:=frmpointerscannersettings.maxlevel;
staticscanner.method2:=true;
staticscanner.method3:=true;
staticscanner.fast:=frmpointerscannersettings.CheckBox1.Checked;
staticscanner.psychotic:=frmpointerscannersettings.psychotic;
staticscanner.writableonly:=frmpointerscannersettings.writableonly;
staticscanner.unallignedbase:=frmpointerscannersettings.unallignedbase;
staticscanner.reuse:=frmpointerscannersettings.cbreuse.checked;
staticscanner.progressbar:=progressbar1;
staticscanner.threadcount:=frmpointerscannersettings.threadcount;
staticscanner.scannerpriority:=frmpointerscannersettings.scannerpriority;
progressbar1.Max:=staticscanner.stop-staticscanner.start;
open1.Enabled:=false;
staticscanner.starttime:=gettickcount;
staticscanner.Resume;
if staticscanner.reverse then
begin
label10.visible:=false;
label3.Visible:=false;
label4.Visible:=false;
label12.Visible:=false;
label7.Visible:=false;
label9.Visible:=false;
label14.Visible:=false;
label15.Visible:=false;
end
else
begin
label10.visible:=true;
label3.Visible:=true;
label4.Visible:=true;
label12.Visible:=true;
label7.Visible:=true;
label8.Visible:=true;
label14.Visible:=true;
label15.Visible:=true;
end;
pgcPScandata.Visible:=true;
except
staticscanner.Free;
staticscanner:=nil;
end;
end;
end;
Danke für die hilfe