已知一个变量的地址,但不知道它的名称,如何取得数据?
谢谢!!

解决方案 »

  1.   

    读取字符串
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
        Any, source As Any, ByVal bytes As Long)
    Private Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As _
        Long
    Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As _
        Long' retrieve a string at a given address
    ' if LENGTH < 0 the string is considered to be null-terminated
    ' and the function determines its lengthFunction StringFromAddr(ByVal address As Long, ByVal length As Long, _
        Optional ByVal isUnicode As Boolean) As String
        ' determine the length, if necessary
        If length < 0 Then
            If isUnicode Then
                length = lstrlenW(address)
            Else
                length = lstrlenA(address)
            End If
        End If
        ' copy the characters
        StringFromAddr = Space$(length)
        If isUnicode Then
            CopyMemory ByVal StrPtr(StringFromAddr), ByVal address, length * 2
        Else
            CopyMemory ByVal StringFromAddr, ByVal address, length
        End If
    End Function--------------------------------------
    读取字节,整数,长整数
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
        Any, source As Any, ByVal bytes As Long)' read a byte from memoryFunction PeekB(ByVal address As Long) As Byte
        CopyMemory PeekB, ByVal address, 1
    End Function' read an integer from memoryFunction PeekI(ByVal address As Long) As Integer
        CopyMemory PeekI, ByVal address, 2
    End Function' read a Long value from memoryFunction PeekL(ByVal address As Long) As Long
        CopyMemory PeekL, ByVal address, 4
    End Function
      

  2.   

    谢谢!
    请问调用函数CopyMemory的时候第二个参数用ByVal address是什么意思?什么情况要这样用啊?
    是不是指把address的值当地址传过去?