找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 6703|回复: 1

[求助]请求帮助,,,为什么下面的代码运行起来很卡。。。帮我改改

  [复制链接]

30

主题

96

回帖

0

精华

铂金会员

积分
1548
发表于 2007-7-16 14:48:24 | 显示全部楼层 |阅读模式
<p>'<br/>Private Function 查找城市地址(hProcess As Long, bSearch() As Byte) As Long</p><p>Const PAGE_READWRITE = 4<br/>Const MEM_COMMIT = &amp;H1000<br/>Dim i As Long, j As Long<br/>Dim r As Long, mbi As MEMORY_BASIC_INFORMATION<br/>Dim lpAddress As Long<br/>Dim ubs As Long<br/>Dim add_city As Long<br/>Dim flg_27 As Long<br/>Dim nCount As Long</p><p>&nbsp;&nbsp;&nbsp; ubs = UBound(bSearch)<br/>&nbsp;&nbsp;&nbsp; lpAddress = &amp;H3F00000<br/>&nbsp;&nbsp;&nbsp; nCount = 0<br/>&nbsp;&nbsp;&nbsp; r = VirtualQueryEx(hProcess, lpAddress, mbi, Len(mbi))<br/>&nbsp;&nbsp;&nbsp; Do While (r And (lpAddress &lt; &amp;H7FFFFFFF))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DoEvents&nbsp;&nbsp;&nbsp; '[防止死机]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If (mbi.Protect And PAGE_READWRITE) And (mbi.State = MEM_COMMIT) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim lpBuffer() As Byte<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReDim lpBuffer(mbi.RegionSize - 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, mbi.BaseAddress, lpBuffer(0), mbi.RegionSize, 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = 0 To mbi.RegionSize - 1 - ubs<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DoEvents&nbsp;&nbsp;&nbsp; '[防止死机]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For j = 0 To ubs<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If bSearch(j) &lt;&gt; lpBuffer(i + j) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoTo 10<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_city = i + lpAddress<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReadProcessMemory hProcess, add_city - 28, ByVal VarPtr(flg_27), 2, 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If flg_27 = 39 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nCount = nCount + 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查找城市地址 = add_city<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit For<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>10:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If nCount &gt; 0 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lpAddress = lpAddress + mbi.RegionSize<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = VirtualQueryEx(hProcess, lpAddress, mbi, Len(mbi))<br/>&nbsp;&nbsp;&nbsp; Loop<br/>&nbsp;&nbsp;&nbsp; CloseHandle hProcess<br/>&nbsp;&nbsp;&nbsp; 'If nCount = 0 Then<br/>&nbsp;&nbsp;&nbsp; 'Text1.Text = "有城市没有找到"<br/>&nbsp;&nbsp;&nbsp; 'End If</p><p><br/>End Function</p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2007-7-16 15:34:36 | 显示全部楼层
<p>那当然啊,你现在是对内存进行搜索</p><p>复制内存这个操作本身就非常耗资源了(你可以一次复制多点内存试一下,比如10M)</p><p>并且你是频繁地在复制</p><p>搜索过程,你可以参考一下这个代码:</p><p><a href="http://www.m5home.com/bbs/viewthread.php?tid=1344">http://www.m5home.com/bbs/viewthread.php?tid=1344</a></p>
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表