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

Unicode to ANSI. Delphi.

-

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

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

Ответ
 
Опции темы
Старый 18.08.2012, 19:59   #1
 Разведчик
Аватар для AlexDerkoda
 
AlexDerkoda никому не известный тип
Регистрация: 11.08.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Smile Unicode to ANSI. Delphi.

Здравствуйте.

Заранее хочу предупредить, что в программировании я ещё совсем зелёный, поэтому прошу отнестись с пониманием, если я задам "глупый" вопрос.

Вот в чём суть:
Захотел написать простенькое приложение (что-то на подобии бота).
Чисто, ради собственного развития.

Нашёл на форуме адреса и оффсеты основных игровых "переменных", и написал ниже следующее:

Код:
procedure sk12;
var
PwHandle : Dword;
BytesCount, ipbuf : Dword;
Hp:dword;
processID: Cardinal;
wHandle, tHandle: Hwnd;

begin
wHandle := FindWindow(nil, 'Perfect World');
if wHandle <> 0 then
begin
  tHandle := GetWindowThreadProcessId(wHandle, @ProcessID);
  pwHandle := OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID);

  ReadProcessMemory(PwHandle, ptr($A571E0), @ipbuf, sizeof(ipbuf), BytesCount);   //BaseAdress
ReadProcessMemory(PwHandle, ptr(ipbuf+$1c), @ipbuf, sizeof(ipbuf), BytesCount); //+0x1C
ReadProcessMemory(PwHandle, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount); // +0x34
ReadProcessMemory(PwHandle, ptr(ipbuf+StrToInt('$' + edit1.text)), @HP, sizeof(HP), BytesCount);

ShowMessage(inttostr(HP));
CloseHandle(PwHandle); //Закрываем Handle
  end
else
 showmessage('Процесс не найден');
 end;
Хотя код и кривоват, но прекрасно находит числовые значения (ХП,МП,WID и т.п.), однако не отображает Unicode строки.

Пробовал вот так:

Код:
var
WideStr: Widestring;
WideCharPointer : PWideChar;

  ReadProcessMemory(PwHandle, ptr($A571E0), @ipbuf, sizeof(ipbuf), BytesCount);   //BaseAdress
ReadProcessMemory(PwHandle, ptr(ipbuf+$1c), @ipbuf, sizeof(ipbuf), BytesCount); //+0x1C
ReadProcessMemory(PwHandle, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount); // +0x34
ReadProcessMemory(PwHandle, ptr(ipbuf+ $66с), @HP, sizeof(HP), BytesCount);      //+0x66с - ник перса

WideStr:= WideChar(HP);
WideCharPointer:= addr(WideStr[1]);
ShowMessage(WideCharPointer);
Но не получилось, вместо текста выдаёт вопросы.

Помогите с решением, заранее благодарен)
  Ответить с цитированием
Старый 18.08.2012, 21:02   #2
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: Unicode to ANSI. Delphi.

вот тут
Код:
ReadProcessMemory(PwHandle, ptr(ipbuf+ $66с), @HP, sizeof(HP), BytesCount);
ты находишь АДРЕС имени.
Вот по этому адресу лежат байты.
Начинаешь с первого (нулевого) байта перебирать их беря по 2 байта (т.к. ты читаешь имя, а оно в кодировке Unicode) и конвертируешь каждые 2 байта в Unicode символ, пока не наткнешься на конец строки (массив {0x00, 0x00}). Добавляешь конвертированные символы в массив типа char. Потом массив char собираешь в string.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------

Последний раз редактировалось krukovis; 18.08.2012 в 21:05.
  Ответить с цитированием
Старый 18.08.2012, 23:31   #3
 Разведчик
Аватар для nitrotek
 
nitrotek душа компанииnitrotek душа компанииnitrotek душа компанииnitrotek душа компанииnitrotek душа компанииnitrotek душа компанииnitrotek душа компанииnitrotek душа компании
Регистрация: 10.06.2010
Сообщений: 30
Популярность: 940
Сказал(а) спасибо: 7
Поблагодарили 139 раз(а) в 22 сообщениях
 
По умолчанию Re: Unicode to ANSI. Delphi.

Вопрос зачем вам переходить на ANSI? Если вы конечно не пользуетесь Delphi №< 2007 года
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 18.08.2012, 23:35   #4
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Unicode to ANSI. Delphi.

Юзай поиск. Я 100500 раз уже писал свою функцию для этого дела.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 22.08.2012, 03:06   #5
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: Unicode to ANSI. Delphi.

у меня раньше тоже была такая беда когда делал парсер акков... Короче суть в чем? Нафига тебе из юникода в аски переводить? Можно сделать к примеру так
Код:
var
HP: array[0..255] of widechar;
s: WideString;

-----------------------------------------------------------

ReadProcessMemory(PwHandle, ptr(ipbuf+StrToInt('$' + edit1.text)), @HP, sizeof(HP), BytesCount);
s := HP;
memo1.lines.add(s);
как видишь все просто...
  Ответить с цитированием
Старый 24.08.2012, 15:47   #6
 Разведчик
Аватар для AlexDerkoda
 
AlexDerkoda никому не известный тип
Регистрация: 11.08.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Unicode to ANSI. Delphi.

vladoscom93, спасибо за помощь! Теперь всё прекрасно работает.
  Ответить с цитированием
Старый 24.08.2012, 15:55   #7
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: Unicode to ANSI. Delphi.

Цитата:
Сообщение от nitrotekПосмотреть сообщение
Вопрос зачем вам переходить на ANSI? Если вы конечно не пользуетесь Delphi №< 2007 года

Ну там вопрос чтения байтов из памяти и конвертирования в строку был, на сколько я понял. Ну я отвечал про это по крайней мере ). Так что версия Делфи к кодировке считываемого текста вряд ли как то относится.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 24.08.2012, 15:59   #8
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: Unicode to ANSI. Delphi.

Цитата:
Сообщение от krukovisПосмотреть сообщение
Ну там вопрос чтения байтов из памяти и конвертирования в строку был, на сколько я понял. Ну я отвечал про это по крайней мере ). Так что версия Делфи к кодировке считываемого текста вряд ли как то относится.

В версиях Дельфина ниже 2007 серьезные проблемы с unicode вроде бы как
  Ответить с цитированием
Старый 24.08.2012, 16:17   #9
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Unicode to ANSI. Delphi.

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
В версиях Дельфина ниже 2007 серьезные проблемы с unicode вроде бы как

как бы юникод ввели в 2010 студии полностью... и никаких "серьёзных" проблемм нету, всего один велоси***** и всё работает.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Программа] Unicode Patch v0.2 Okke Прочий софт для Counter-Strike 2 06.01.2012 18:55
[Файл] Emoji+Unicode HD for iPhone 4 1.0 MASTA-BLASTA Apple iOS 4 30.11.2011 10:26
[Программа] Boxy Bot Helper ( Unicode to MS-DOS ) Ironwind Dark Orbit 1 18.06.2011 00:40
GoldSRC Unicode patch by Crock ШtepSeLb Прочий софт для Counter-Strike 1 12.05.2011 18:56

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

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

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