
谁能把这个VB6的程序变成VB.NET?
-----------------VB6.0------------------------
Public Declare Function ReadProcessMemory Lib kernel32.dll (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByRef lpBuffer As Any, ByVal nSize As Long, ByRef lpNumberOfBytesWritten As Long) As Long
Dim h As Long
ReadProcessMemory hProcess, ByVal &HAEBD90, h, 4, 0& 人血
ReadProcessMemory hProcess, ByVal h + &H20, h, 4, 0&
ReadProcessMemory hProcess, ByVal h + &H250, h, 4, 0&
Label1.Caption = h
=================VB.NET========================
Public Declare Function ReadProcessMemory Lib kernel32 (ByVal hProcess As Integer, ByVal lpBaseAddress As IntPtr, ByVal lpBuffer As IntPtr, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Dim h As Long
ReadProcessMemory(hProcess, &HAEBD90, h, 4, 0) 人血
ReadProcessMemory(hProcess, h + 20, h, 4, 0)
ReadProcessMemory(hProcess, h + 250, h, 4, 0)
Label1.Text = h
VB6.0的程序可以运行,而且得到的数据也是正确的,但是VB.NET的那个程序可以运行但是得到的数据却是“空白”,请大家帮忙修改一下啊
只剩这60分了。。。大家将就一下。。。
在线等,随时测试
__________________________________________________________________________
ByVal lpBaseAddress As IntPtr, ByVal lpBuffer As IntPtr
怎么是IntPtr?!
__________________________________________________________________________
Public Declare Function ReadProcessMemory Lib kernel32 Alias ReadProcessMemory (ByVal hProcess As Integer,ByVal lpBaseAddress As Object,ByRef lpBuffer As Object, ByVal nSize As Integer, lpNumberOfBytesWritten As Integer) As Integer
看原声明,lpBaseAddressObject好象也应该用ByRef,问题不大
Object用string应该也可以!
__________________________________________________________________________
Public Declare Function ReadProcessMemory Lib kernel32 (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByVal lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function ReadProcessMemory Lib kernel32 (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByVal lpBuffer() As Byte, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
我用这两个也还是一样的结果啊。。。
__________________________________________________________________________
VB的long可存放的是从 -2147483648 到 2147483648,把一个比2147483648还大数从内存中读出来,然后再用一个新的数写回去该怎么做?,比如:2148550880
顶楼
-----------------VB6.0------------------------
Dim h As Long
ReadProcessMemory hProcess, ByVal &HAEBD90, h, 4, 0& 人血
ReadProcessMemory hProcess, ByVal h + &H20, h, 4, 0&
ReadProcessMemory hProcess, ByVal h + &H250, h, 4, 0&
Label1.Caption = h
这个h的值就是2148550880,Label1.Caption最终应当显示2148550880才对,可是我却无法正常显示,如果VB6.0可以把这个问题解决,我也就不必再强制转换为VB.NET了
single和double放的话会出现 E- ,但是我要的是全部数字的那种
如果有办法把single和double的 E- 格式变成全部都是数字的也行
__________________________________________________________________________
unsingle long h//把h定义为无符号长整型就可以了。
__________________________________________________________________________