unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,IdUDPServer,IniFiles, TlHelp32, StdCtrls, ExtCtrls, Gauges,
IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient, ComCtrls, mmsystem,
XPMan, Buttons;
type
TForm1 = class(TForm)
Gauge1: TGauge;
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label7: TLabel;
Edit3: TEdit;
Timer2: TTimer;
Label9: TLabel;
CheckBox1: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
wideChars : array[0..11] of WideChar;
myString : String;
Form1: TForm1;
//i,rw:DWord;
ch:WideChar;
wch:array[0..255] of WideChar;
KlientWindow:HWND; //Handle клиента
ProcessId:Integer;
hProcess:Integer; //Идентификатор объекта
HPMinValue:Integer; //Минимальное значение ХП (из Edit1)
// MPMinValue:Integer; //Минимальное значение МП (из Edit2)
L:Integer; // уров
//Nik:TListItem; //ник
// M:Integer; //бабло
//Nik : String;
// Nik : Integer ;
// ID:Integer;
sss: String;
// key:string;
data,rw:dword;
str:string;
implementation
{$R *.dfm}
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if
Gauge1.Progress = 0 then
begin
PlaySound('bietsa.wav', 0, SND_ASYNC);
Label9.Caption:='Сдох (x_x)';
end
else
begin
Label9.Caption:='Живой (^_^)';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hSnap,hProc :THandle;
pe:TProcessEntry32;
begin
sss:=edit3.text;
KlientWindow := FindWindow(nil, PChar(sss)) ;//Находим Handle окна
GetWindowThreadProcessId(KlientWindow,@ProcessId); //Получаем И.П.
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); //Открываем процесс с возможностью записи
Timer1.Enabled := True;
Timer2.Enabled := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
PlaySound('c:\1.wav', 0, SND_ASYNC);
Timer1.Enabled := False;
Timer2.Enabled := False;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
var
hSnap,hProc :THandle;
pe:TProcessEntry32;
begin
if checkbox1.Checked
then
sss:=edit3.text;
KlientWindow := FindWindow(nil, PChar(sss)); //Находим Handle окна
GetWindowThreadProcessId(KlientWindow,@ProcessId); //Получаем И.П.
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); //Открываем процесс с возможностью записи
Timer1.Enabled := True;
Timer2.Enabled := True
else
Timer1.Enabled := False;
Timer2.Enabled := False;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
function GetPlayerName(Local_hProc:dword):string;
var HP,HPMax,MP,MPMax:Integer;
WHP,WHPMax,L,WMP,WMPMax,Lvl,Nikname,Nik,M,Money,IDs,str,data,ID,Opit,O,Omax,Om,NoB:DWord;
begin
try//На всякий случай заключаем в try...except, дабы в случай релога не засыпать пользователя ошибками
ReadProcessMemory (hProcess, Pointer($00B9029C), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$0494), @WHP, sizeof(WHP), NoB); //Читаем значение HP
HP := Integer(WHP); //Переводим Integer
ReadProcessMemory (hProcess, Pointer($00B9029C), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$34), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$04DC), @WHPMax, sizeof(WHPMax), NoB); //Читаем значение MaxHP
HPMax := Integer(WHPMax); //Переводим Integer
Gauge1.Progress := round(HP * 100 / HPMax); //Присваиваем процентное значение HP Gauge1
ReadProcessMemory (hProcess, Pointer($00B9029C), @Lvl, sizeof(Lvl), NoB);
ReadProcessMemory (hProcess, Pointer(Lvl+$34), @Lvl, sizeof(Lvl), NoB);
ReadProcessMemory (hProcess, Pointer(Lvl+$048C), @Lvl, sizeof(Lvl), NoB);
L := Integer(Lvl); //Переводим Integer
Label7.Caption := IntToStr(L);
except
end;
end;
var HP,HPMax,MP,MPMax:Integer;
WHP,WHPMax,L,WMP,WMPMax,Lvl,Nikname,Nik,Local_hProc,Result,M,Money,IDs,str,data,ID,Opit,O,Omax,Om,NoB:DWord;
BEGIN
try//На всякий случай заключаем в try...except, дабы в случай релога не засыпать пользователя ошибками
ReadProcessMemory (hProcess, Pointer($00B9029C), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$0494), @WHP, sizeof(WHP), NoB); //Читаем значение HP
HP := Integer(WHP); //Переводим Integer
ReadProcessMemory (hProcess, Pointer($00B9029C), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$34), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$04DC), @WHPMax, sizeof(WHPMax), NoB); //Читаем значение MaxHP
HPMax := Integer(WHPMax); //Переводим Integer
Gauge1.Progress := round(HP * 100 / HPMax); //Присваиваем процентное значение HP
ReadProcessMemory (hProcess, Pointer($00B9029C), @Lvl, sizeof(Lvl), NoB);
ReadProcessMemory (hProcess, Pointer(Lvl+$34), @Lvl, sizeof(Lvl), NoB);
ReadProcessMemory (hProcess, Pointer(Lvl+$048C), @Lvl, sizeof(Lvl), NoB);
L := Integer(Lvl); //Переводим Integer
Label7.Caption := IntToStr(L);
EXCEPT
end;
end;
end.
1)ошибка
[DCC Error] Unit1.pas(118): E2029 'END' expected but 'ELSE' found
[DCC Fatal Error] Project1.dpr(9): F2063 Could not compile used unit 'Unit1.pas'
не могу понять в чем ошибка весь интернет пересмотрел все варианты указанные в интеренете не подходят.
2) хотелось бы узнать почему кодReadProcessMemory (hProcess, Pointer($00B9029C),
требуется 2 раза повторять или писать в пустую
begin
end;
end;
begin
end;
end.