读书人

关于VB.net 2005调用API(ReadProroces

发布时间: 2012-02-19 19:43:39 作者: rapoo

关于VB.net 2005调用API(ReadProrocessMemory)的问题
Public Class MemoryClass
Public Shared hprocess As Integer
Public Shared buffer As Byte
Private Shared lpNumberOfBytesWritten As Integer = 0
Public Const PROCESS_ALL_ACCESS = &H10
Public Declare Function CloseHandle Lib "kernel32.dll " (ByVal hProcess As Integer) As Integer
<DllImport( "kernel32.dll ", SetLasterror:=True, CharSet:=CharSet.Auto, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function ReadProcessMemory(ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByVal lpBuffer As Byte, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
End Function
<DllImport( "kernel32.dll ", CharSet:=CharSet.Auto, Setlasterror:=True)> _
Public Shared Function OpenProcess(ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Boolean, ByVal dwProcessId As Integer) As Integer
End Function

Public Shared Sub Init()
Dim ps As Process() = Process.GetProcessesByName( "elementclient ")
If (ps.Length = 0) Then
MsgBox( "未打开! ")
End If
Dim pid As Process = ps(0)
hprocess = OpenProcess(&H10, True, pid.Id)
End Sub
Public Shared Sub Dispose()
If (hprocess > 0) Then
CloseHandle(hprocess)
End If
End Sub
Public Shared Function ReadInt(ByVal address As Integer, ByVal length As Integer) As Integer
If (length > 4) Then
length = 4
End If
If (length < 1) Then
length = 4


End If
buffer = 4
Dim r As Integer = ReadProcessMemory(hprocess, address, buffer, length, lpNumberOfBytesWritten)
If (r = 0) Then
MsgBox( "读取内存错误! ")
End If
r = 0
Dim i As Integer = 0
Do While i < length
r += buffer * MemoryClass.ComputeExp(256, i)
i = i + 1
Loop
Return r
End Function
Private Shared Function ComputeExp(ByVal i As Integer, ByVal j As Integer)
Dim r As Integer = 1
Dim o As Integer = 0
Do While o < j
r *= i
o = o + 1
Loop
Return r
End Function
End Class
我在Dim r As Integer = ReadProcessMemory(hprocess, address, buffer, length, lpNumberOfBytesWritten)设了断点.里面的参数都可以的到数值.
不知道怎么了,弄了一天没弄好.郁闷啊.各位大大帮帮忙


[解决办法]
你的buffer就一个byte

读书人网 >VB Dotnet

热点推荐