szg9999 发表于 2011-3-31 09:12:32

文本框只显示16进制代码不显示 名字!???

那位大侠帮忙看一下!谢谢了!

var
Gameh:HWND;               //设Gameh
GamePid:DWORD;            //设GamePid 为存储游戏ID
Gamehprocess: THandle;      //设Gamehprocess 为存储游戏进程句柄
readByte:DWORD;             //设readByte读出数据的实际大小的
Zhjzsc :DWORD;                  
Zhname:DWORD;            //名字
begin
//获取游戏窗口句柄
Gameh:=findwindow(nil,'legend of mir2');
//获取进程ID
GetWindowThreadprocessID(Gameh,GamePid);
//获取进程句柄
   gamehProcess:=OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE,false,GamePid);
   //读出主号基址的地址
   Readprocessmemory(gamehProcess, Pointer($05f3e20),@Zhjzsc,4,readByte);
   //读出主号基址的地址+1级偏移24 主号名称的数据地址
   Readprocessmemory(gamehProcess, Pointer(Zhjzsc+$24),@Zhjzsc,4,readByte);
    //读出主号基址的地址+0级偏移0 主号名称的数据
   Readprocessmemory(gamehProcess, Pointer(Zhjzsc+$0),@Zhname,4,readByte);
   //显示主号名称信息
   self.Edit1.Text:= intToHex(Zhname,8);
end;


为什么文本框输出的是 16进制代码,而不是 文本(如游戏人物名称)

374919318 发表于 2011-3-31 09:13:22

读取内存中的字符(Unicode And Ascii)

很久前写的函数了
function ReadStr(hProcess: THandle; add, size: Integer): string;
var
Buffer: array of Char;
num: cardinal;
begin
ReadProcessMemory(hProcess, Pointer(add), @Buffer, size, num);
Buffer := #0;
Result := Buffer;
end;
页: [1]
查看完整版本: 文本框只显示16进制代码不显示 名字!???