• 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的特征码也能找到人物名子的地址
     





    附件列表

  • 相关阅读:
    MySQL ON DUPLICATE KEY UPDATE 语法
    MySQl 截取函数 left(),right(),substring(),substring_index() 的用法
    MySQL timestampdiff 和 timestampadd 的用法
    MySQL replace 和 replace into 的用法
    MySQL exists 和 not exists 的用法
    MySQL concat、concat_ws 和 group_concat 的用法
    Python数据类型及其方法详解
    《Python编程从入门到实践》_第八章_函数
    《Python编程从入门到实践》_第七章_用户输入和whlie循环
    编码的秘密(python版)
  • 原文地址:https://www.cnblogs.com/xe2011/p/2525942.html
Copyright © 2020-2023  润新知