CODE Unicode roleName_字符类型数据 人物名子

 
 

(* 
电脑上开了2个 窗口的名子都为Element Client如何处理 默认处理是 哪个窗口是激活的就读取哪个窗口
CE是通过 PID处理的
如何处理多进程游戏

*)


procedure DsplyRoleName();
//roleName=[[[[924E0C]+1C]+20]+5CC]+0//名称
//在Delphi中 用$加个地址 表示 这个地址它是16进制数的
Const
    BaseAddress =$ 924E0C;
        Offset1 =$ 1C;
        Offset2 =$ 20;
      RNOffset1 =$ 5CC;
      RNOffset2 =$ 0;
var
  MyHwnd:HWND;
  MyPid:Dword;
  MyProcess:Thandle;
  MyPointer:Integer;
  Readbyte:DWORD; //Size_T
  RoleName: array [ 0 .. 16] of WideChar; // UniCode 0..17个字符加起来共18个字符
   (*
    完美世界的人物名子最多可用9个汉字组成->18个字节(Bytes)
    1个汉字=2个字节(Byte)
    1个字节=1个英文字母
    9个汉字=9*2(Bytes)=18(Bytes);
    完美世界里使用的是Unicode字符,而我要是以字符串型显示出来的
    UniCode类型的数据需要使用WideChar类型;
    当人物的名子是由9个汉字组成的时候Char类型就会出乱码
  *)


begin
  MyHwnd :=FindWindow( NIL, 'Element Client');
   if myHwnd = 0 then ShowMessage( 'No Found Element Client Window');
  GetWindowThreadProcessId(MyHwnd,@myPid);
  MyProcess :=OpenProcess(PROCESS_ALL_ACCESS,false,myPid);
  ReadProcessMemory(MyProcess,Pointer(BaseAddress),@MyPointer, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +Offset1),@MyPointer, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +Offset2),@MyPointer, 4,Readbyte);
   //把Unicode转换成ASCII
  ReadProcessMemory(MyProcess,Pointer(MyPointer +RNOffset1),@MyPointer, 4,Readbyte);
  ReadProcessMemory(MyProcess,Pointer(MyPointer +RNOffset2),@RoleName, 32,Readbyte); //20要读取的字节数
  CloseHandle(MyProcess); //试用18不行 试19也不行,试20可行
   //显示数值 //是上面16的2倍
  FORM1.ComboBox1.Clear;
  FORM1.ComboBox1.Text :=RoleName;
  FORM1.ComboBox1.Items.Add(RoleName) ;
end;

procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
  DsplyRoleName; //单击ComboBox小三角事件 OnDropDown
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     form1.combobox1.Text := '';
     form1.FormStyle :=fsStayOnTop;
     DsplyRoleName;
end;
 
 
///
用龙龙内存遍历工具查找人物名称地址
用OD的特征码也能找到人物名子的地址
 





附件列表

 

转载于:https://www.cnblogs.com/xe2011/archive/2012/05/30/2525942.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值