谁能把这个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应该也可以!
[解决办法]
unsingle long h//把h定义为无符号长整型就可以了。