当前位置:编程学习 > VB >>

vb 读取其它程序窗口数字

我想通过vb编一个小程序,读取其它应用软件运行时显示的列表框某一列多行数字,而且数字是不挺的变化的,不知道如何编写,请高手指点,不胜感谢,急急急急急急急急 --------------------编程问答-------------------- 路过,看看。 --------------------编程问答-------------------- 如果两个软件都是自己开发的就好办,输出的程序将变化的内容用SendMessage发送到要获取的程序的text里,获取程序不断读取text的值就可以了。 --------------------编程问答-------------------- 有2个方法:
1:
先用工具软件Cheat Engine 获取应用软件列表框内存地址,然后读这个内存数据。
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
2:
用 GetDIBits  获取应用软件列表框像素数组,然后进行数字识别。或者用MDIVWCTL.DLL文字识别控件,但必须安装office 2003。 --------------------编程问答-------------------- 给思路吧:1.得到句柄,可以FindWindow,FindWindowEx,GetWindowHwnd,EnumChildWindows,WindowFromPoint都可以;2.SendMessage(LB_GETCOUNT)获取列表框条目数;3.循环SendMessage(LB_GETTEXTLEN)获取项目文本长度,SendMessage(LB_GETTEXT)获取项目文本;4.如果连
Data也要的话就SendMessage(LB_GETITEMDATA) --------------------编程问答-------------------- 4楼正解。标准做法 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- ce取得地址,读内存不行吗? --------------------编程问答-------------------- 先用CE得到位址,就可以讀取資訊 --------------------编程问答-------------------- 读取其它应用软件 运行时显示的列表框 某一列 多行数字,而且数字是不挺的变化的...

3年前 我是先查找到屏幕上不断变化的数据 在远程进程的内存空间里 的具体位置后 再不断的去检查 数据是否变化 如果发现变化了 就远程复制到本地缓冲区

但是因为本地进程必须不断的去检查远程进程的内存 远程数据的变化又比较快 所以性能不是很稳定 效率很低下 后来一直在寻求一种所谓 中断 的方法 就是当远程内存中数据发生改变的时候 远程进程是不是可以发送一个消息给本地进程去读取新数据 结果还是没有成功 因为本地进程在处理消息1的过程中 新的消息2又来了 造成数据遗漏的问题 消息1的数据已经被消息2覆盖

现在 采用一种方法 非。法。更。改。远程进程(商业软件)的代码 直接让远程进程将屏幕(内存)不断变化的数据 源源不断的写到指定磁盘文件中 问题得到解决。 --------------------编程问答-------------------- 这个要发消息,读内存等...超级绿豆很多年前好象写过这样的代码,不过楼主好象不见了?
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,