目的:要读取的进程:ABC,内存地址:0x00123456
大约读取16个字符长度的数据。
读取出来之后,把读取到的数据,赋值给一个字符串变量:nameCString name;
ReadProcessMemory(ABC,(LPCVOID)0x00123456,(LPVOID)readed,0x16,NULL);搞了好几天也没搞懂,请各位高手帮忙。
请问这段代码应该如何写?

解决方案 »

  1.   

    Copy a string.char *strcpy( char *strDestination, const char *strSource );试试:ReadProcessMemory(ABC,(LPCVOID)0x00123456,(LPVOID)readed,0x16,NULL);
    CString name((LPCSTR)readed);
      

  2.   

    如果读出的readed中含有0或不是以0结尾的,name的结果会不对
      

  3.   

    我那有个ReadProcessMemory的例子
    http://community.csdn.net/Expert/topic/3993/3993010.xml?temp=.1138117
      

  4.   

    谢谢楼上的例子,现在可以读取出来了。
    可是,我读取出来的字符总是不能和设定的字符相符合呢?
    例如:
    已知内存里要读取的内容是:abcdefgchar name[]="abcdefg";
    char readname[7];
    DWORD read =0x00123456;
    ReadProcessMemory(ABCD,(LPCVOID)read,readname,7,NULL);
    if(readname == name)
    MessageBox("读取成功");
    else
    MessageBox("读取失败");
      

  5.   

    1.char 的字符串要以零结尾的
      所以
      char name[]="abcdefg";
      char readname[8];
      DWORD read =0x00123456;
      ReadProcessMemory(ABCD,(LPCVOID)read,readname,7,NULL);  
      readname[7]=0;
    2.char 字符串不能用==比较
      要用
    if(strcmp(readname,name)==0)
    MessageBox("读取成功");
    else
    MessageBox("读取失败");
      

  6.   

    非常感谢 keiy() 终于调试通了。