请教,在VB6.0环境下如何对内存数据进行读写?
如题,在编程过程中需对读取指定位置的内存值,不知该怎么办呀?地址为0X42340000. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)dim aBuffer(31) as byte
call CopyMemory(abuffer(0), byval &H42340000, 27) '从地址为0x42340000的地方开始,读取27字节内容到aBuffer中
但我觉得你的 0x42340000 好象说的是“第三方”程序的吧?
如果是,就得用 ReadProcessMemory( )等另外几个跨进程读取的API了。
在程序中调用Declare Function YaLiOne Lib "RBIC1_VB.dll" Alias "OutLin" (ByVal Zp1m As Single, ByVal Zp2m As Single, ByVal A As Single, ByVal B As Single, c0 As Long, c1 As Long) As Boolean;
C原型为DLLDIR BOOL OutLin(float Zp1m, float Zp2m, float A, float B, float *C0, float *C1);怎样在已知c0的ad=1110704128的前提下,得到c0的value呢?谢谢各位高手了!
+1
C/C++ 、Java等语言中的 float ,就是 VB 中的 Single 类型,即单精度浮点数,长度为4字节。
照你说的这样子,应该就是属于“本进程”的内存地址了,就可以用 CopyMemory 来解决了啊。
API按我在 1F 中所写的样子,读取代码如下:
Dim vC0 As Single, vC1 As Single帮忙顶一下,求助点分
CopyMemory vC0, ByVal 1110704128, 4
'这样写也一样: 1110704128 = 0x42340000
'CopyMemory vC0, ByVal &H42340000, 4
' 如果 *C1 的值在Long变量 XXX 中,读取 *C1 处的值:
CopyMemory vC1, ByVal XXX, 4
补充:VB , 基础类