Private Sub Timer8_Timer()
     hwnd1 = FindWindow(vbNullString, "海之乐章 【" & d & "】")
     GetWindowThreadProcessId hwnd1, pid
     pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
     ReadProcessMemory pHandle,&H316040B , 1150419196, 4, 0&
     CloseHandle pHandle
     Timer7.Interval = 1000
End Sub问下如果读取内存&H316040B,如果它的值等于1150419196,msgbox“成功”否则msgbox“失败"。。 下面是我写的 谁指点下哪错了?if &H316040B=1150419196 then
msgbox“成功”
else
msgbox“失败"
end if

解决方案 »

  1.   

    BOOL WINAPI ReadProcessMemory(
      __in          HANDLE hProcess,
      __in          LPCVOID lpBaseAddress,
      __out         LPVOID lpBuffer,
      __in          SIZE_T nSize,
      __out         SIZE_T* lpNumberOfBytesRead
    ); 这是这个API 的用法 第二个参数你就应该传递要读取的地址,第三个参数你应传递一个缓冲区,而不是一个立即数!,第四个参数是缓冲的大小。这个API 如成功会将读取的值放入缓冲区中。然后用这个缓冲区的值与 1150419196  比较才对。
      

  2.   

    ReadProcessMemory pHandle,&H316040B , value, 4, 0& 
    if value = 1150419196 then
    msgbox“成功” 
    else 
    msgbox“失败" 
    end if
      

  3.   

     十六进制的&H316040B是十进制的51774475 ,&H316040B=1150419196永远不可能.
    if &H316040B=1150419196 then 相当于if 3=8 then
      

  4.   


    是不是
    dim Value as longPrivate Sub Timer8_Timer()
        hwnd1 = FindWindow(vbNullString, "海之乐章 【" & d & "】") 
        GetWindowThreadProcessId hwnd1, pid
        pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
        ReadProcessMemory pHandle, &H316040B, Value, 4, 0&
        CloseHandle pHandle
    If Value = 1127812301 Then
    MsgBox "成功"
    Else
    MsgBox "失败"
    End If
    End Sub
      

  5.   

    失败啊  
    我把iF后面换成Value = Label3.Caption 可是调试出现了 实时错误13 类型不般配
    不知道哪错了
      

  6.   

    一个数字,一个字符串,当然不行,
    把Label3.caption改称val(Label3.caption)
      

  7.   

    不会出错了,不过一直显示Label3
      

  8.   

    单步调试一下,看看你的Value的值是多少?可能有错误
      

  9.   

    每次调用API后,都要检查返回值.因为API不像VB6那样,有错给你自动报出来,你要向API"问".API执行的情况,就在其返回值上表现出来.这里给你一个简单封装,可以将API执行不正常时的返回值翻译为中文,方便调试:http://www.m5home.com/bbs/thread-2509-1-1.html