文本框只显示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进制代码,而不是 文本(如游戏人物名称) 读取内存中的字符(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]