I am having a strange problem. For a fun little test, I decided to see if I could get some minesweeper info out of memory. For some reason though, ReadProcessMemory() fails every time. I am not sure why because with this same code I was previously reading some memory from other processes. I have tried opening the process with PROCESS_ALL_ACCESS but to no avail. Can anyone point me in the right direction?
Also, point out any bad code practices.
Code:
#include <stdio.h>
#include <windows.h>
typedef unsigned long DWORD;
int main(void)
{
HWND hWnd = FindWindow(NULL, "Minesweeper");
HWND pHandle;
DWORD PID;
unsigned long lpWidth = 0x1005334;
unsigned long bytesread;
unsigned int width;
if (hWnd == NULL)
{
printf("Window not found\n");
return 1;
}
printf("Window Handle = %x\n", hWnd);
GetWindowThreadProcessId(hWnd, &PID);
printf("Process ID = %x\n", PID);
pHandle = OpenProcess(PROCESS_ALL_ACCESS, 1, PID);
printf("Process Handle = %x\n", pHandle);
if (pHandle == NULL)
{
printf("The Process handle could not be retrieved\n");
return 1;
}
if (ReadProcessMemory(pHandle, &lpWidth, &width, sizeof(width), &bytesread))
{
printf("Width = %d\n", width);
}
else
{
printf("ReadProcessMemory Failed\n");
}
return 0;
}