创建一个取进程ID的变量 全局变量(假设变量名是AA)
在启动窗口创建完毕写(需要超级模块或者其他模块):AA=取进程ID(“abcexe”)'假设进程是abcexe
然后代码就是:写内存整数型()这个代码;还有很多种;比较常用的就是这个
不能这样读,你读的内存具有保护属性,产生了非法访问。
如果要读其他进程的内存数据,可以调用WINDOWS API 函数ReadProcessMemory
当然,读取的内存必须具有可读的属性。
我觉得你的方法没什么问题。如果你给的地址获取的是对的的话,你看看乱码是不是因为这个:你的确读取到了8个字节,4个字符;但是显示的时候因为不知道字符串结束位置,导致messagebox显示的是乱码。你可以看看name中的8个字节的数据到底是不是4个字符的unicode码,或者先把name分配的空间给初始化为0之后再进行后续的函数调用,这样就不存在不知道结束位置在哪儿的问题了。
希望有帮助。
ByVal是传值,Byref是传址,可以ByVal 直接数,也可以ByVal 变量,&H是16进制的意思
ByVal &HCFD3D4就是直接把16进制数CFD3D4传递给调用函数,如果不加ByVal,缺省是Byref,也就是传递该数值所在的地址,结果当然就完全不一样了,如果用变量:
Dim m As Long
m = &HCFD3D4
ReadProcessMemory pHandle, ByVal m, life, 4, 0&
使用API函数
ReadProcessMemory
原型:
Private
Declare
Function
ReadProcessMemory
Lib
"kernel32"
(ByVal
hProcess
As
Long,
ByVal
lpBaseAddress
As
Any,
ByVal
lpBuffer
As
Any,
ByVal
nSize
As
Long,
lpNumberOfBytesWritten
As
Long)
As
Long
说明:
ByVal
hProcess
As
Long,
是打开的进程的句柄
ByVal
lpBaseAddress
As
Any,
是进程的地址
ByVal
lpBuffer
As
Any,
是数据的存放地址
ByVal
nSize
As
Long,
是你想要读取的数据的长度
lpNumberOfBytesWritten
As
Long
是实际读取的数据的长度
以上就是关于易语言 如何读取所有进程内存地址里的数据全部的内容,包括:易语言 如何读取所有进程内存地址里的数据、怎样通过程序读内存地址中的值、请教下跨进程内存读取问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)