忙了一天还是搞不懂

Darkyu 2008-11-08 12:57:13
是关于writeprocessmemory和readprocessmemory函数的

Private Sub Timer1_Timer()'interval设置200 每200毫秒去读它
Gamehwnd1 = FindWindow(vbNullString, "Maplestory")
GetWindowThreadProcessId Gamehwnd1, ID
hProces1 = OpenProcess(PROCESS_ALL_ACCESS, False, ID)
If (Gamehwnd1 = 0) Then
Else
ReadProcessMemory hProces1, ByVal &H99D620, di, 4, 0&
If di <> 0 Then'因为害怕她变为0
Label3.Caption = di
End If
End If
End Sub

Private Sub Check1_Click()
u =val(Label3.Caption)'把Label3.Caption的数值赋值给u
Gamehwnd1 = FindWindow(vbNullString, "Maplestory")
GetWindowThreadProcessId Gamehwnd1, ID
hProces1 = OpenProcess(PROCESS_ALL_ACCESS, False, ID)
If (Gamehwnd1 = 0) Then
Else
If Check1.Value = 1 Then
WriteProcessMemory hProces1, ByVal &H99D620, 0, 4, 0&'写4个字节的0给&H99D620 只要写4个字节的0就实现功能.
Else
WriteProcessMemory hProces1, ByVal &H99D620, u, 4, 0&'check1.vaule=0的时候 把刚才读到的u写到&H99D620里
End If
End If
End Sub


但是.取消打勾 数值变为了5 每次都一样. 因为&H99D620每次的数值都不一样 所以 我只能用赋值的.但是每次改回来都变成了5.不知道杂回事?
...全文
69 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗷嗷叫的老马 2008-11-08
  • 打赏
  • 举报
回复
u =val(Label3.Caption)

这里的值是从&H99D620读来的,先保证它的值正确

然后,工程第一行加入Option Explicit,所有变量显式声明了再说后话

WriteProcessMemory hProces1, ByVal &H99D620, u, 4, 0&这句的U又不是long,而是个varaint(如果你没声明的话)

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧