zoukankan      html  css  js  c++  java
  • 读取游戏数据

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        Label3: TLabel;
        label1: TLabel;
        Label2: TLabel;
        Labname: TLabel;
        Labhp: TLabel;
        Labmp: TLabel;
        Button1: TButton;
        Label4: TLabel;
        Lablevel: TLabel;
        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:Cardinal;
      r_Name:array[0..16] of WideChar;
      r_Name1:integer;
      const baseadr = $912BA4;  //一级基址

    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    var
      Num: Cardinal;
    begin
      Ghwnd := FindWindow('QElementClient Window', 'Element Client');  //获取窗口
      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 + $24), @ECXI, 4, Num);
      ReadProcessMemory(ProcessID, Pointer(ECXI + $25C), @r_HP, 4, Num);    //血
      ReadProcessMemory(ProcessID, Pointer(ECXI + $274), @r_MAXHP, 4, Num);  //血最大值
      ReadProcessMemory(ProcessID, Pointer(ECXI + $260), @r_mp, 4, Num);    //蓝
      ReadProcessMemory(ProcessID, Pointer(ECXI + $278), @r_maxmp, 4, Num);  //蓝最大值
      ReadProcessMemory(ProcessID, Pointer(ECXI + $250), @r_level, 4, Num);
      ReadProcessMemory(ProcessID, Pointer(ECXI + $398), @r_Name1, 4, Num);
      ReadProcessMemory(ProcessID, Pointer(r_Name1), @r_Name, 34, Num);
      labhp.Caption:=inttostr(r_hp)+'/'+inttostr(r_maxhp);
      labmp.Caption:=inttostr(r_mp)+'/'+inttostr(r_maxmp);
      lablevel.Caption:=inttostr(r_level)+'级';
      LabName.Caption := r_Name;
      CloseHandle(ProcessID);                    //关闭进程句柄
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    close;
    end;

    end.

  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/94YY/p/2044085.html
Copyright © 2011-2022 走看看