Delphi 读取人物名字的
问题 2010 年 03 月 13 日 星期六 15:44 图片:
解决了 附上源码大家看看
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Labname: TLabel; Labhp: TLabel; Labmp: TLabel; Lablevel: TLabel; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; ProcessID: Thandle; ProcID: Thandle; Ghwnd: Thandle; Ecxi: Cardinal; r_level,r_hp,r_maxhp,r_mp,r_maxmp,r_Name:Cardinal; const baseadr = $00669944; //一级基址 implementation
{$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var Num: Cardinal; begin Ghwnd := FindWindow('TianLongBaBu WndClass', '天龙八部 0.88.1161 (网 通-华北网通一区:漳南书院)'); //获取窗口 if Ghwnd = 0 then begin ShowMessage('游戏未启动'); Application.Terminate(); end; GetWindowThreadProcessId(Ghwnd, ProcID); //进程 ID ProcessID := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID); // 进程句 柄 if ProcessID = 0 then begin showMessage('无法打开线程'); Application.Terminate(); end; ReadProcessMemory(ProcessID, Pointer(baseadr), @ECXI, 4, Num); ReadProcessMemory(ProcessID, Pointer(ECXI + $c), @ECXI, 4, Num); ReadProcessMemory(ProcessID, Pointer(ECXI + $154), @ECXI, 4, Num); ReadProcessMemory(ProcessID, Pointer(ECXI + $4), @ECXI, 4, Num); ReadProcessMemory(ProcessID, Pointer(ECXI + $8e8), @r_HP, 4, Num); // 血 ReadProcessMemory(ProcessID, Pointer(ECXI + $950), @r_MAXHP, 4, Num); //血最大值 ReadProcessMemory(ProcessID, Pointer(ECXI + $8ec), @r_mp, 4, Num); // 蓝 ReadProcessMemory(ProcessID, Pointer(ECXI + $954), @r_maxmp, 4, Num); //蓝最大值 ReadProcessMemory(ProcessID, Pointer(ECXI + $5c), @r_level, 4, Num); ReadProcessMemory(ProcessID, Pointer(ECXI + $30), @r_Name, 8, Num); labhp.Caption:=inttostr(r_hp)+'/'+inttostr(r_maxhp); labmp.Caption:=inttostr(r_mp)+'/'+inttostr(r_maxmp); lablevel.Caption:=inttostr(r_level)+'级'; LabName.Caption:=Pchar(@r_Name); CloseHandle(ProcessID); //关闭进程句柄 end;
procedure TForm1.Button1Click(Sender: TObject); begin close; end; end.