谁能例举一下有什么原因会使调用ReadProcessMemory函数读目标进程数据失败?我有一个程序用到了ReadProcessMemory函数,我朋友一直用这个程序都很好,
没出过问题,可是有一次他重装操作系统后这个程序就不能用了。而且我能肯定
的是,问题就出在ReadProcessMemory 函数调用失败上。这种问题很奇怪,哪位朋友能帮我解答吗?

解决方案 »

  1.   

    问题很简单,就是:
    谁能例举一下,有什么原因会导致调用ReadProcessMemory函数读目标进程数据失败?
    ReadProcessMemory函数调用是否成功跟系统的设置有关吗?
      

  2.   

    一般会出错~~主要是你给的读取范围出错
    1.PID是否为0
    2.是否是系统进程
    3.进程是否打开成功
    4.缓冲区大小小于你的读取长度
    5.别的什么原因~~反正我是经常吧Length(Buf)写成.Sizeof(Buf)所以经常出错
    (偶稀饭..Buf:String..下面动态申请内存)6.最关键一个~就是你的读取基址是不是不存在!!!!!看看MSDN应该你的参数问题
      

  3.   

    谢谢hokooio(七月) 1 不为0
    2.不是系统进程
    3.进程打开成功
    4.缓冲区大小不小于我的读取长度
    5.ReadProcessMemory的第四个参数,读取长度也没问题
    6.我的程序功能是读取游戏进程的内存数据,问题是同样
      的程序在别人的电脑里面运行都能成功读取所需要的数
      据,可在我那个朋友的电脑里面运行就提示ReadProcessMemory
      调用失败(我在程序里面插入了判断语句)。可更奇怪的
      是,是在朋友重装系统后才出现ReadProcessMemory
      调用失败的,之前还是正常的。
      

  4.   

    用ShowMessage(SysErrorMessage(GetLastError()))看看是什么错
      

  5.   

    >>没出过问题,可是有一次他重装操作系统后这个程序就不能用了。
    权限的问题??getLastError 看看
      

  6.   

    不会是这个游戏使用了~nProGame 驱动保护了吧。。
    冒险岛类似的游戏是这样的保护你装个金山游侠试试
    不过你的OpenProcess函数的第一个参数修改成
    对进程进行任何操作
    修改游戏数据的时候最好暂停游戏(搜索游戏窗口的进程然后!Debug他)
    然后就可以修改了~~修改完毕以后再恢复线程