你如何知道这地址0x03CBD1E8是可以访问的呢??不会是这里出问题了吧

解决方案 »

  1.   

    首先应该确定是哪一步出的问题,可以用调试器调试,或者直接在代码里加入显示上一句的执行结果,比如
    if( !IsWindow(hQQSGWinClass) ){
    GetWindowThreadProcessId(hQQSGWinClass,&pid);//得到进程ID
    hWnd = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);//打开进程
    errCode = GetLastError();//如果OpenProcess失败,可以从errCode找到原因
    show(errCode);
    ReadProcessMemory(hWnd,(LPCVOID)0x03CBD1E8,(LPVOID)lpbuf,200,&value);
    errCode = GetLastError();
    show(errCode);
    sprintf(buff,"读入了%d个字节",value);
    show(buff);
    SetDlgItemText(IDC_STATIC1,(LPCTSTR)&value);//这里是给我的Static Text写个标题....}
      

  2.   

    郁闷了....在给QQ三国做外挂.总是出些问题.VC++编译器在编译时,有时候后卡住...点击停止编译的时候也不好使...有点郁闷.现在CE打不开游戏了..不知道腾讯又整出啥东西来了..
      

  3.   

    你读字符串为什么不直接用char呢?char lpbuf[201];
    ReadProcessMemory(hWnd,(LPCVOID)0x03CBD1E8,(LPVOID)lpbuf,200,&value);
    TRACE(lpbuf);
      

  4.   

    觉得char 和DWORD缓冲区是一样,虽然用DWORD 做缓冲区有点儿别扭
    所以再仔细看了下知道你的原因了,
    你读出来的值应该在lpbuf里面
    而不是 value里面
    value只是返回你读了多少个字节
      

  5.   

    shilong大哥 您的意思是这样?
    SetDlgItemText(IDC_STATIC1,(LPCTSTR)lpbuf);//
      

  6.   

    !IsWindow(hQQSGWinClass) 改成 IsWindow(hQQSGWinClass)
      

  7.   

    读写进程空间时要先更改需要读写的空间的读写权限,不然你什么都读不出来,也什么都写不进去。可以参考以下代码:HWND    hWnd = ::FindWindow("****", "****");   // 需要修改成匹配的窗口名及窗口类名
    HANDLE  hProcess;
    DWORD   lpBuffer[200];if (IsWindow (hWnd))   /* 楼主这一句错的有点不应该 */
    {
    DWORD   dwProcess;
    GetWindowThreadProcessId (hWnd, &dwProcess);//得到进程ID
    hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, dwProcess);//打开进程
    if (hProcess != NULL)
    {
    MEMORY_BASIC_INFORMATION xMemInfo;
    if (VirtualQueryEx (hProcess, (LPCVOID)0x01234567/* 需要读写的地址 */, &xMemInfo, sizeof(xMemInfo)))
    {
    if (VirtualProtectEx (hProcess, xMemInfo.BaseAddress, xMemInfo.RegionSize, PAGE_READWRITE, &xMemInfo.Protect))
    {
    SIZE_T xSize;
    if (ReadProcessMemory (hProcess, (LPCVOID)0x01234567/* 需要读写的地址 */, lpBuffer, sizeof (lpBuffer), &xSize))
    {
    ...
    }
    DWORD  xProtect;
    VirtualProtectEx (hProcess, xMemInfo.BaseAddress, xMemInfo.RegionSize, xMemInfo.Protect, &xProtect);
    }
    }
    }
    }