Гость (_СирожА_) Опубликовано 21 февраля, 2012 Поделиться Опубликовано 21 февраля, 2012 Всем привет! Извините, что делаю тему, но я тут новенький и не знаю куда писать...Я уже год ломаю голову над одной проблемой в моем трейнере для GTA: San AndreasЯ хочу сделать в программе телепортер... Собсно он готов, но работает не правильно!А конкретно не работает "ReadProcessMemory", вернее оно работает, но не так.В игре каждая координата игрока записана в виде числа с точкой, например: 176.00, тоесть Float,но когда я пытаюсь прочесть это значение, мне возвращает 1127219200, тоесть целое число(4 байта).Вот как я обявляю API:Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddess As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWriten As Long) As LongВот функция чтения:Private Function ReadMemory(WindowName As String, Adress As Long)Dim hWnd As Long, pid As Long, pHandle As Long, str As String * 4hWnd = FindWindow(vbNullString, "GTA: San Andreas")If (hWnd = 0) Then Exit FunctionGetWindowThreadProcessId hWnd, pidpHandle = OpenProcess(Process_All_Access, False, pid)ReadProcessMemory pHandle, Adress, str, 4&, 0&ReadMemory = Val("&H" + Str2Hex(str))CloseHandle hProcessEnd FunctionВот вызов функции:ReadMemory("Crusader", &HB7CD98)Я уже облазил сотни форумов и в отчаянии пишу на очередной. Умоляю Вас! Перестройте этот кусок кода так, чтобы он возвращал мне Float значение. Заранее спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 21 февраля, 2012 Поделиться Опубликовано 21 февраля, 2012 Можешь поискать у нас на форуме темы по словам"BitConverter" и "Convert"А лучше сразу поищи информацию в MSDN Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения