level 1
Dim bytMap(my * 32 - 1) As Byte
Call ReadProcessMemory(hProcess, ByVal mapAddr, bytMap(0), my * 32, 0&)
能不能帮我解释一下,参数bytMap(0), my * 32这么写的意思,也就是说为什么这么写.
2009年08月24日 00点08分
1
level 8
ReadProcessMemory的第三个参数应该是指针类型的,也就是数组在内存的起始地址,VB用数组的第0个元素代表其指针。
第四个参数表示数组的元素个数
2009年08月24日 00点08分
3
level 6
楼上错了。
“VB用数组的第0个元素代表其指针。 ”
这里要看 ReadProcessMemory 的声明方式是 Byval 还是 Byref,第三个参数应该传入指向缓冲区的指针,而这儿楼主的声明应该是 Byref,所以是 bytMap(0), 如果按 Byval,应该是 Byval Varptr(bytMap(0))。
“第四个参数表示数组的元素个数。”
第四个参数是代表缓冲区的大小,因为是 Byte 类型,所以是my * 32,后面实际上省略了 * 1。如果缓冲区按 Long 声明,即Dim lngMap(my * 32 - 1) As Long,那么就是 my * 32 * 4。
2009年08月24日 00点08分
4
level 1
首先非常感谢您说得这么细
谢谢.
这是声名的部分
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
您说应该是Byval Varptr(bytMap(0))这样写,是什么意思呀?
2009年08月25日 08点08分
5
level 6
传指针。
这里用Byval Varptr(bytMap(0)) 或 bytMap(0) 都可以。
2009年08月25日 11点08分
6
level 1
哦,原来意思一样呀.
VB我是刚刚开始学的,问题很多,谢谢你
如果有问题,向你请教
2009年08月26日 09点08分
7