qq_44724135 2019-08-03 19:02 采纳率: 0%
浏览 1448

使用ReadProcessMemory时遇到的问题

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就读取失败,我找了好久都没找到原因,这该怎么解决呢?

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-08-03 21:11
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?