procedure TForm1.Button3Click(Sender: TObject);
var
buf: pbyte;
ReadNum: Cardinal;
ProcessHandle: Cardinal;
ProcessID: Cardinal;
BA: PInteger;
begin
Memo1.Lines.Clear;
New(buf);
New(ba);
//New(ReadNum);
try
BA := Pinteger($45b99c); //你要读的地址。不是从0开始,你知道把。不是
//ultraEdit里的偏移地址。是w32asm里反汇编得到的。
GetWindowThreadProcessId(Self.handle,ProcessID);
if ProcessID = 0 then
Exit;
ProcessHandle := OpenProcess(PROCESS_VM_READ,false,ProcessID);
if ProcessHandle = 0 then
Exit;
ReadProcessMemory(ProcessHandle,BA,buf,1,ReadNum);
Memo1.Lines.Add(IntToHex(buf^,2));
finally
FreeMem(buf);
//FreeMem(BA);
end;
end;
在2000下测试通过了。98肯定也没问题。