本人新手,如果答案是要用API的话,请把声明部分也写出来吧,我对API的声明还不太熟练!谢谢大家了!

解决方案 »

  1.   

    http://www.google.cn/search?complete=1&hl=zh-CN&q=declare+ReadProcessMemory&meta=有很多很多的例子
      

  2.   

    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
    Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
        Private mMyData() As Byte
        Private mMyDataSize As Long
        Private mHmem As Long
    Public Enum enGlobalmemoryAllocationConstants
        GMEM_FIXED = &;amp;H0
        GMEM_DISCARDABLE = &;amp;H100
        GMEM_MOVEABLE = &;amp;H2
        GMEM_NOCOMPACT = &;amp;H10
        GMEM_NODISCARD = &;amp;H20
        GMEM_ZEROINIT = &;amp;H40
    End Enum
    Public Sub CopyFromHandle(ByVal hMemHandle As Long)
        Dim lRet As Long
        Dim lPtr As Long
        lRet = GlobalSize(hMemHandle)
        If lRet > 0 Then
            mMyDataSize = lRet
            lPtr = GlobalLock(hMemHandle)
            If lPtr > 0 Then
    ReDim mMyData(0 To mMyDataSize - 1) As Byte
    CopyMemory mMyData(0), ByVal lPtr, mMyDataSize
    Call GlobalUnlock(hMemHandle)
            End If
        End If
    End Sub
    '\\ --[CopyToHandle]--------------------
    '     ---------
    '\\ Copies the private data to a memory 
    '     handle
    '\\ passed in
    '\\ ------------------------------------
    '     ---------
    Public Sub CopyToHandle(ByVal hMemHandle As Long)
        Dim lSize As Long
        Dim lPtr As Long
        '\\ Don't copy if its empty
        If Not (mMyDataSize = 0) Then
            lSize = GlobalSize(hMemHandle)
            '\\ Don't attempt to copy if zero size..
            '     .
            If lSize > 0 Then
    If lPtr > 0 Then
        CopyMemory ByVal lPtr, mMyData(0), lSize
        Call GlobalUnlock(hMemHandle)
    End If
            End If
        End If
    End Sub
    是上面這個嗎?在planet-source-code.com上有  
    //**************************************
        //     
        //Windows API/Global Declarations for :P
        //     ossible sharable VB memory
        //**************************************
        //     
        Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
        Declare Function WriteProcessMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
        Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessId" () As Long
        Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
        Public const SPECIFIC_RIGHTS_ALL =&;amp;H0000FFFF 
        Public const STANDARD_RIGHTS_REQUIRED = &;amp;H000F0000 
        Public const STANDARD_RIGHTS_ALL = &;amp;H001F0000 
    ===============================================================
        Dim a As Long
        a = 'process id to open
        Dim b As Long
        b = OpenProcess((SPECIFIC_RIGHTS_ALL And STANDARD_RIGHTS_ALL), False, a)
        'opens a process handle for memory access
        ---
        Dim a As Long
        Dim b As Long
        Dim c As Long
        Dim d As Boolean
        Dim e As Long
        Dim f As Long
        d = ReadProcessMemory(a, ByVal b, ByVal VarPtr(c), 4, e) <-- reads from a openprocess handle's memory address.
        d = WriteProcessMemory(a, ByVal b, c, 4, e) <-- writes instead of reads.
      

  3.   

    感谢yourlin(我只是民工),但是代码好复杂,哪位大哥能解释一下吗?
      

  4.   

    Public Enum enGlobalmemoryAllocationConstants
        GMEM_FIXED = &;amp;H0
        GMEM_DISCARDABLE = &;amp;H100
        GMEM_MOVEABLE = &;amp;H2
        GMEM_NOCOMPACT = &;amp;H10
        GMEM_NODISCARD = &;amp;H20
        GMEM_ZEROINIT = &;amp;H40
    End Enum这里为什么老是红字啊?提示"缺少表达式"