$31是十进制49,你要移动31还是49?ReadDroiyanData是自定义函数,你不贴函数原型叫人怎么知道是什么,顺便帮你贴一下,原来的函数有说明: //读入《决战》指定地址的N个字节的数据,成功返回读入的字节数,失败返回-1 function ReadDroiyanData(Address: integer; N: integer; var Buf): integer; var ByteOfRead: DWORD; begin Result := -1; if ReadProcessMemory(drProcessHandle, Pointer(Address), @Buf, N, ByteOfRead) then Result := ByteOfRead; end; //ReadDroiyanData
//读入《决战》指定地址的N个字节的数据,成功返回读入的字节数,失败返回-1
function ReadDroiyanData(Address: integer; N: integer; var Buf): integer;
var
ByteOfRead: DWORD;
begin
Result := -1;
if ReadProcessMemory(drProcessHandle, Pointer(Address),
@Buf, N, ByteOfRead) then
Result := ByteOfRead;
end; //ReadDroiyanData
=================================================
把从$0439FE8开始的两个字节内容读入到J中,J应该是Word吧
=================================================
意思应该不是把开始的两个字节读入J中, 是以2字节的方式读取 这个地址 如果是4就是4字节读取ReadDroiyanData($0439FE8, 2, j); //$0439FE8是假设的,我用ce找出这个值
editsm.text := IntToStr(j); //editsm.text 输出的值就是游戏中的血值, 测试是正确的.但$0439FE8(是别人给我的基址)这个地址是变动的, 重开游戏就变了. 别人给了我基址是$0439FE8 ,告诉我偏移量是 31 . 实际地址就是基址+偏移量我需要得到的就是 实际地址就是基址+偏移量 的结果 !!! 这个结果应该是跟$0439FE8 这个格式一样.希望楼上兄弟帮我解决下,马上结贴!
ShowMessage( IntToHex($00439FE8+31, 8) )