本人遇到一个极其诡异的问题,多方求证却一直找不到答案,费话不说,问题如下:
先贴一段程序出来
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As
Long, ByVal bInheritHandle As
Long, ByVal dwProcessId As
Long) As
Long
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
【其它没用的声明和定义省略了】
……【省略】
jb = FindWindow("""")【这里面都写对了】
Call GetWindowThreadProcessId(jb, dq)【正确了】
lj = OpenProcess(jb, True, dq)【jb改成PROCESS_VM_READ试过了,true改成fales什么组合都用过了】
Dim xg As Long
Call ReadProcessMemory(lj, ByVal &H70B387C, xg, 4, 0&)【这句代码中的地址是有用的】
Label11.Caption = xg 【这里显示有问题了。。。】
……【省略】
以上是本人的代码省略了些无关紧要的,我是想让这句代码显示将&H70B387C中的值赋予xg然后显示在Label11上
前两天一直都正常,可这两天却出现一个诡异的现象
我打开被显值的软件,刚开始运行上面那段代码,能够正常的显示出&H70B387C中的值,然后我将被显值软件关了,重新开,再运行上面一段代码xg的值就变成了0,以后不管怎么开怎么运行都显示0,err错误代码显示6,加上Process结束代码也试过了,这期间CE一直能正常显示此内存的值,是个三位的整数678。
原本以为软件重开内存值变了,可是重新启动电脑后,再开软件,运行这段代码,地址依然不变,可显示却又正常了,但重复上面操作,把软件关了,重开,显示又变成了0,err错误代码显示6,CE仍然显示678
如此重复,每次关一次软件都必须重起一次电脑代码才会有效。
我开始怀疑是VB软件或则电脑的问题
于是在另一台电脑上装了另一个VB【两个VB都不是精简版】结果另一台电脑还是和原来一样出现诡异的问题。
无语了,很久都没找到答案,希望能有某位高手指点迷津!小弟在此谢过!!
VB由史以来最犀利的一个问题~!~!~!~!~!~!~!~!
答案:1 悬赏:0 手机版
解决时间 2021-04-30 09:18
- 提问者网友:饥饿走向夜
- 2021-04-30 02:54
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-04-30 03:48
安装完整版
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯