readprocessmemory(hProcess,ptr(base_pointer),@DWbuf,4,nbyte);//
readprocessmemory(hProcess,ptr(DWbuf+$1C),@DWbuf,4,nbyte); //получаем из памяти количество
readprocessmemory(hProcess,ptr(DWbuf+$28),@DWbuf,4,nbyte); //дропа вокруг
readprocessmemory(hProcess,ptr(DWbuf+$14),@DWbuf,4,nbyte); //
j:=DWbuf;
readprocessmemory(hProcess,ptr(base_pointer),@DWbuf,4,nbyte);
readprocessmemory(hProcess,ptr(DWbuf+$1C),@DWbuf,4,nbyte);
readprocessmemory(hProcess,ptr(DWbuf+$28),@DWbuf,4,nbyte);
readprocessmemory(hProcess,ptr(DWbuf+$18),@DWbuf2,4,nbyte);
index:=-1;
for i:=0 to $300 do
begin
DWbuf:=0;
readprocessmemory(hProcess,ptr(DWbuf2+i*4),@DWbuf,4,nbyte);
if (DWBuf<>0) and (nbyte>0) then
readprocessmemory(hProcess,ptr(DWbuf+$4),@DWbuf,4,nbyte);
if (DWbuf<>0) and (nbyte>0) then
begin
inc(index);
readprocessmemory(hProcess,ptr(DWbuf+$10C),@drop.WID,4,nbyte);
readprocessmemory(hProcess,ptr(DWbuf+$3C),@drop.coords,16,nbyte);
readprocessmemory(hProcess,ptr(DWbuf+$14C),@drop._type,4,nbyte);
readprocessmemory(hProcess,ptr(DWbuf+$164),@DWbuf,4,nbyte);
readprocessmemory(hProcess,ptr(DWbuf+$0),@BufS,60,nbyte);
DropName:=string(bufS);
delete(DropName,pos(#0,DropName),maxint);
if dropname='?Шарф из ткани' then
sleep(1000);
try
MySection.Enter;
index:=Form1.CheckListBox2.Items.IndexOf(DropName);
if (index=-1) then
begin
Form1.CheckListBox2.Items.Add(DropName);
if Form1.CheckBox1.Checked then
Form1.CheckListBox2.Checked[Form1.CheckListBox2.Count-1]:=true;
index:=Form1.CheckListBox2.Count-1;
end;
//ischeck:=false;
if (index<>-1) then
if Form1.CheckListBox2.Checked[index] then
begin
//ischeck:=true
drop.index:=i;
SetLength(drop_,Length(drop_)+1);
drop_[Length(drop_)-1]:=drop;
end;
finally
MySection.Leave;
end;
end;
end;
________________
Ни одно доброе дело не остается безнаказанным.