Witam
To mój pierwszy post na tym forum, więc witam wszystkich.
Wracam do programowania po niemal 3 latach i już pierwszego dnia napotkałem problem.
A więc do sedna:
Przy pomocy CE znalazłem pointer i offset interesującego mnie adresu. Zawsze zwraca właściwą wartość w CE, czyli jest właściwy.
Próbowałem coś takiego:
ReadProcessMemory(warspear, (LPCVOID*)(addy+ offset), &mp, 4, 0);
ale zwraca zero. Nie bardzo wiem jak to ugryźć teraz.
Obok wczytuje wartość z adresu, do którego zaprowadził mnie w tej chwili, przy tym odpaleniu, program CheatEngine ze znalezionego adresu+offset. Odczytuje dobrą wartość, ale adres ten jest zmienny...
W czym tkwi błąd?
Pozdrawiam
Bartosz
Skrócona całość:
#include "stdafx.h"
#include "windows.h"
#pragma comment(lib, "user32.lib")
#include <iostream>
using namespace std;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HWND handle = FindWindow(0, L"Warspear Online");
DWORD pid;
GetWindowThreadProcessId(handle, &pid);
HANDLE warspear = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
int mp, mp1;
DWORD addres = 0x04786414;
DWORD addy = 0x0018FAE8;
WORD offset = 0x09C;
ReadProcessMemory(warspear, (LPCVOID*)(addy+ offset), &mp, 4, 0);
ReadProcessMemory(warspear, (LPVOID*)addres, &mp1, 4, 0);
cout << "wlasciwe MP: " << mp1 << endl;
cout << "aktualne MP: " << mp << endl;
cout << "\n\n"<< endl;
system("pause");
}