Ola pessoal, estou tentando usar a função ReadProcessMemory em um programa que eu fiz: pego o HWND pelo nome da janela, depois pego o ID e depois pego o HANDLE, até aqui tudo ok, depois eu uso a ReadProcessMemory, mas ela sempre retorna 0 e não consigo ler
o endereço, na documentação da função diz que ela só retorna 0 caso o endereço passado esteja em uma área do processo que esteja inacessivel, mas acontece que quando uso o debugger no programa eu consigo ler o endereço normalmente, ele está totalmente acessível
no HEAP.
#include <iostream>
#include <sstream>
#include <windows.h>
using namespace std;
DWORD address = 0x007E4F9C;
char item[155];
DWORD pid;
HWND window;
void fatal(string erro)
{
cout<<erro<<endl;
system("pause");
exit(0);
}
int main()
{
HANDLE handle;
if(!(window=FindWindow(NULL, "Teste")))
fatal("Programa não foi encontrado.");
GetWindowThreadProcessId(window, &pid);
if(!(handle = OpenProcess(PROCESS_VM_READ, FALSE, pid)))
fatal("Falha ao abrir processo.");
if(!ReadProcessMemory(window, (void*)address, &item, 155, 0))
{
stringstream stream;
stream <<"Falha ao ler endereço: " << address <<".";
fatal(stream.str());
}
cout<<"Lidos de "<<address<<"-> "<<item<<endl;
return 0;
}
agradeço a ajuda desde já.