RT

解决方案 »

  1.   

    MSDN里有详细的说明啊,自己先看啊,实在看不懂了再问。
    BOOL ReadProcessMemory(
      HANDLE hProcess,  // handle to the process whose memory is read
      LPCVOID lpBaseAddress,
                        // address to start reading
      LPVOID lpBuffer,  // address of buffer to place read data
      DWORD nSize,      // number of bytes to read
      LPDWORD lpNumberOfBytesRead 
                        // address of number of bytes read
    );
    BOOL 在VB里对应Long
    HANDLE hProcess 在VB里对应 ByVal Long,这个参数是用OpenProcess打开的
    LPCVOID lpBaseAddress 在VB里对应 ByVal Long,起始地址。
    LPVOID lpBuffer 存放数据的缓冲区,这个在VB里可以对应多种类型
    DWORD nSize 在VB里对应ByVal Long,缓冲区的长度或要读取的数据长度
    LPDWORD lpNumberOfBytesRead 在VB里对应ByRef Long,实际读取的数据长度。关于lpBuffer,是一个地址。
    比如,如果你要读取一个Long值,那么它可是是ByRef Long,(nSize=4)
    比如,如果你要读指定长度的Byte数据,那么先分配ba As Byte(0 to size-1),这个参数就是
    ByRef Byte, 调用时用ba(0),(nSize=size)
      

  2.   

    我按照一篇文章上做的
    Dim retV%, r&
    If FindGame Then
    r = ReadProcessMemory(hProcess, &H10CAEBA, retV, 4, 0)但读出来老是只读了前两个字节
      

  3.   

    Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符号 (%)。retV是两个字节的变量,当然只能读两个字节了,你呀VB基础没学好,还玩儿Windows API.