vb 读取内存+IF
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 --------------------编程问答-------------------- BOOL WINAPI ReadProcessMemory(
__in HANDLE hProcess,
__in LPCVOID lpBaseAddress,
__out LPVOID lpBuffer,
__in SIZE_T nSize,
__out SIZE_T* lpNumberOfBytesRead
);
这是这个API 的用法 第二个参数你就应该传递要读取的地址,第三个参数你应传递一个缓冲区,而不是一个立即数!,第四个参数是缓冲的大小。这个API 如成功会将读取的值放入缓冲区中。然后用这个缓冲区的值与 1150419196 比较才对。 --------------------编程问答-------------------- ReadProcessMemory pHandle,&H316040B , value, 4, 0&
if value = 1150419196 then
msgbox“成功”
else
msgbox“失败"
end if --------------------编程问答-------------------- 十六进制的&H316040B是十进制的51774475 ,&H316040B=1150419196永远不可能.
if &H316040B=1150419196 then 相当于if 3=8 then
--------------------编程问答--------------------
是不是
dim Value as long
Private 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 --------------------编程问答-------------------- 失败啊
我把iF后面换成Value = Label3.Caption 可是调试出现了 实时错误13 类型不般配
不知道哪错了 --------------------编程问答-------------------- 一个数字,一个字符串,当然不行,
把Label3.caption改称val(Label3.caption) --------------------编程问答--------------------
不会出错了,不过一直显示Label3 --------------------编程问答-------------------- --------------------编程问答-------------------- 仔细看看ReadProcessMemory --------------------编程问答-------------------- AdjustTokenPrivileges --------------------编程问答-------------------- 单步调试一下,看看你的Value的值是多少?可能有错误 --------------------编程问答-------------------- 每次调用API后,都要检查返回值.
因为API不像VB6那样,有错给你自动报出来,你要向API"问".
API执行的情况,就在其返回值上表现出来.
这里给你一个简单封装,可以将API执行不正常时的返回值翻译为中文,方便调试:
http://www.m5home.com/bbs/thread-2509-1-1.html --------------------编程问答-------------------- 返回值都不检查,你连问题出在哪一步都不知道,还调试个啥呢....对吧.
补充:VB , 基础类