谁能把这个VB6的程序变成VB.NET?

lengx7 2007-04-08 09:34:28
-----------------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分了。。。大家将就一下。。。
在线等,随时测试
...全文
206 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lengx7 2007-04-08
  • 打赏
  • 举报
回复
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-"格式变成全部都是数字的也行
lengx7 2007-04-08
  • 打赏
  • 举报
回复
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


我用这两个也还是一样的结果啊。。。
51Crack 2007-04-08
  • 打赏
  • 举报
回复
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应该也可以!
51Crack 2007-04-08
  • 打赏
  • 举报
回复
ByVal lpBaseAddress As IntPtr, ByVal lpBuffer As IntPtr
怎么是IntPtr?!
sz_lgp 2007-04-08
  • 打赏
  • 举报
回复
unsingle long h//把h定义为无符号长整型就可以了。

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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