Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Delphi 7 to Delphi 10.2

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 15.10.2018, 03:47   #1
 Разведчик
Аватар для den57
 
den57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауру
Регистрация: 24.11.2010
Сообщений: 12
Популярность: 580
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Delphi 7 to Delphi 10.2

Добрый день, учусь писать на Delphi, скачал саму последнюю версию, и сразу наткнулся на ошибку.

Посмотрев на данном форуме примеры, начал пробовать вывести ХП персонажа, но делфи ругается на функцию ReadProcessMemory
Код:
E2033 Types of actual and formal var parameters must be identical
В этом коде
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  base_addr=$009C0E6C;
var
  PwHandle: DWORD;
  BytesCount, ipbuf, PID: DWORD;
  Hp: Integer;
  WndHndl: THandle;
begin
  WndHndl := findwindow('ElementClient Window', nil);
  GetWindowThreadProcessId(WndHndl, @PID);
  PwHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);

  ReadProcessMemory(PwHandle, Ptr(base_addr), @ipbuf, SizeOf(ipbuf), BytesCount);
  ReadProcessMemory(PwHandle, Ptr(ipbuf+$1c), @ipbuf, SizeOf(ipbuf), BytesCount);
  ReadProcessMemory(PwHandle, Ptr(ipbuf+$34), @ipbuf, SizeOf(ipbuf), BytesCount);
  ReadProcessMemory(PwHandle, Ptr(ipbuf+$490), @HP, SizeOf(HP), BytesCount);

  ShowMessage(IntToStr(Hp));
  CloseHandle(PwHandle);
end;
Нашел информацию по отличаю старых и новых версий
Код:
//Delphi 2010
function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; stdcall;
function WriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; stdcall;

//Delphi XE2
function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: SIZE_T; var lpNumberOfBytesRead: SIZE_T): BOOL; stdcall;
function WriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: SIZE_T; var lpNumberOfBytesWritten: SIZE_T): BOOL; stdcall;
Так же пишут что нужно явно указать тип данных для переменной, передаваемой в качестве lpNumberOfBytesWritten, как SIZE_T.

Подскажи пожалуйста как это сделать???
Пытался объявить пременные так, будет ли это правильным??? Или надо как-то конвертировать?
Код:
BytesCount, ipbuf: SIZE_T;

Последний раз редактировалось den57; 15.10.2018 в 03:50.
  Ответить с цитированием
Старый 15.10.2018, 06:46   #2
Super Moderator
 Маршал
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 875
Популярность: 48955
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
 
По умолчанию Re: Delphi 7 to Delphi 10.2

Берешь книжку по делфи или по паскали и начинаешь читать с азов, что такое функции что такое процедуры, что такое переменные и как они объявляются, дальше условия и циклы и пошло поехало. хорошо что ты всего лишь взялся за компилятор, а не за какую нибудь бензопилу или распиловочный станок.
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: http://zhyk.ru/forum/showpost.php?p=38501&postcount=21
  Ответить с цитированием
Старый 15.10.2018, 22:20   #3
 Разведчик
Аватар для den57
 
den57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауру
Регистрация: 24.11.2010
Сообщений: 12
Популярность: 580
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Delphi 7 to Delphi 10.2

Цитата:
Сообщение от ТигрьПосмотреть сообщение
Берешь книжку по делфи или по паскали и начинаешь читать с азов, что такое функции что такое процедуры, что такое переменные и как они объявляются, дальше условия и циклы и пошло поехало. хорошо что ты всего лишь взялся за компилятор, а не за какую нибудь бензопилу или распиловочный станок.

В распиловочном станке и любых видах СМР я сам тебе могу мастер класс показать.
Код:
Инженер ростехнадзора по механическим системам.
тот человек который аттестует сварщиков (НИКС), монтажников, рабочих люльки, стропальщиков, аттестация в области ПТМ и ЭБ.

Надеюсь вопросов больше нет? Так что можно не понтоваться а ответить на поставленный вопрос, Книжки по паскалю почитал, потренировался, но на циклах массивах и т.п.
  Ответить с цитированием
Старый 19.10.2018, 01:17   #4
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Delphi 7 to Delphi 10.2

Код:
procedure TForm1.Button1Click(Sender: TObject); const   base_addr=$009C0E6C; var   PwHandle: DWORD;   ipbuf, PID: DWORD;  
  BytesCount: NativeUint;  
   Hp: Integer;   

WndHndl: THandle; 

begin   

WndHndl := findwindow('ElementClient Window', nil);   

GetWindowThreadProcessId(WndHndl, @PID);   

PwHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);    

ReadProcessMemory(PwHandle, Ptr(base_addr), @ipbuf, SizeOf(ipbuf), BytesCount);   

ReadProcessMemory(PwHandle, Ptr(ipbuf+$1c), @ipbuf, SizeOf(ipbuf), BytesCount);  

 ReadProcessMemory(PwHandle, Ptr(ipbuf+$34), @ipbuf, SizeOf(ipbuf), BytesCount);  

 ReadProcessMemory(PwHandle, Ptr(ipbuf+$490), @HP, SizeOf(HP), BytesCount);    ShowMessage(IntToStr(Hp));   

CloseHandle(PwHandle); 

end;
А вообще ctrl+space, когда курсор в поле ввода параметров метода, покажет какие именно типы переменных ожидает данный метод.
  Ответить с цитированием
Старый 19.10.2018, 09:18   #5
Super Moderator
 Маршал
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 875
Популярность: 48955
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
 
По умолчанию Re: Delphi 7 to Delphi 10.2

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
Код:
procedure TForm1.Button1Click(Sender: TObject); const   base_addr=$009C0E6C; var   PwHandle: DWORD;   ipbuf, PID: DWORD;  
  BytesCount: NativeUint;  
   Hp: Integer;   

WndHndl: THandle; 

begin   

WndHndl := findwindow('ElementClient Window', nil);   

GetWindowThreadProcessId(WndHndl, @PID);   

PwHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);    

ReadProcessMemory(PwHandle, Ptr(base_addr), @ipbuf, SizeOf(ipbuf), BytesCount);   

ReadProcessMemory(PwHandle, Ptr(ipbuf+$1c), @ipbuf, SizeOf(ipbuf), BytesCount);  

 ReadProcessMemory(PwHandle, Ptr(ipbuf+$34), @ipbuf, SizeOf(ipbuf), BytesCount);  

 ReadProcessMemory(PwHandle, Ptr(ipbuf+$490), @HP, SizeOf(HP), BytesCount);    ShowMessage(IntToStr(Hp));   

CloseHandle(PwHandle); 

end;
А вообще ctrl+space, когда курсор в поле ввода параметров метода, покажет какие именно типы переменных ожидает данный метод.

Ну на самом деле он правильно прототип написал и там идет тип SIZE_T
если открыть исходники Winapi.Pas то там это видно:
[Ссылки могут видеть только зарегистрированные пользователи. ]
но если дальше в исходник смотреть то видим что SIZE_T представлен как ULONG_PTR, а ULONG_PTR в свою очередь представлен как NativeUInt
[Ссылки могут видеть только зарегистрированные пользователи. ]
и как раз при нажатии ctrl+space среда выдает такой прототип
[Ссылки могут видеть только зарегистрированные пользователи. ]
Я жз с чем связано такое поведение рад студии. Может быть ты в курсе?
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: http://zhyk.ru/forum/showpost.php?p=38501&postcount=21
  Ответить с цитированием
Старый 22.10.2018, 23:18   #6
 Разведчик
Аватар для den57
 
den57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауруden57 излучает ауру
Регистрация: 24.11.2010
Сообщений: 12
Популярность: 580
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Delphi 7 to Delphi 10.2

Написал автосвап на Delphi 7, все работало, утсановил Delphi XE и вот эта строка
Код:
PwHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
точнее переменная "PwHandle" равняется нулю... как это изменить, читал про Debug привилегии, но тоже не вышло ничего, может кто подскажет?


Вопрос решен, надо запускать Rad Studio от имени админа...

Последний раз редактировалось den57; 22.10.2018 в 23:51.
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Переход из Delphi 7 на Delphi XE NebesaBag Вопросы и ответы, обсуждения 7 05.09.2016 21:29
[Руководство] Настраиваем Delphi 2010/XE, чтобы она выглядела как Delphi 7 RifmoGlas Pascal/Delphi 2 09.02.2013 14:09
[Информация] Помощь в Delphi 7 и в других версиях Delphi Babls77 Pascal/Delphi 4 03.11.2011 22:27
[Помогите!] Delphi †PreDatoR† Вопросы и ответы, обсуждения 1 05.04.2011 08:02
[Помогите!] Delphi. viteks63 Школа Читера 3 28.03.2011 20:26

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 17:48.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net