void CMFCApplication1Dlg::OnBnClickedinto()
{
DWORD dwProcessId = 0;
char VB_name[] = "VisualBoyAdvance";
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
MessageBoxW(TEXT("未知错误"), TEXT("错误"), MB_OK);
}
BOOL bProcess = Process32First(hProcessSnap, &pe32);
while (bProcess)
{
if (strncmp(pe32.szExeFile, VB_name, 16) == 0)
{
dwProcessId = pe32.th32ProcessID;
break;
}
bProcess = Process32Next(hProcessSnap, &pe32); //查找下一个进程
}
if (dwProcessId == 0)
{
MessageBoxW(TEXT("找不到进程"), TEXT("错误"), MB_OK);
}
else //获取进程句柄
{
HANDLE gameprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
if (NULL == gameprocess)
{
MessageBoxW(TEXT("打开失败"), TEXT("错误"), MB_OK);
}
CString strEDIT1;
int a;
int addr = 0x020375E0;
if (ReadProcessMemory(gameprocess, (LPVOID)addr, &a, 2, NULL) == 0)
{
MessageBoxW(TEXT("读取失败"), TEXT("错误"), MB_OK);//此处一直读取失败,如何解决?
}
else
{
strEDIT1.Format(_T("%d"), a);
SetDlgItemText(IDC_EDIT1, strEDIT1);
}
}
}
这是在VS2017上写的代码,前面部分都能正常运行,到ReadProcessMemory就读取失败,我找了好久都没找到原因,这该怎么解决呢?