社区
界面
帖子详情
取多文档界面的文字
whtech
2005-06-06 10:16:21
我要写一个小程序,监控另外一个工控程序,它的屏幕时刻在显示一些数据,我要实时的抓取到它屏幕上面现实的数据,然后打印出来。原来的工控程序采用多文档的方式,我用spy++只能抓到他的视图窗口的类名,不能显示里面的内容,没有任何该程序的sdk,我应该怎么获取这些数据呢?现在老板催的很急,拜托各位了。
...全文
136
12
打赏
收藏
取多文档界面的文字
我要写一个小程序,监控另外一个工控程序,它的屏幕时刻在显示一些数据,我要实时的抓取到它屏幕上面现实的数据,然后打印出来。原来的工控程序采用多文档的方式,我用spy++只能抓到他的视图窗口的类名,不能显示里面的内容,没有任何该程序的sdk,我应该怎么获取这些数据呢?现在老板催的很急,拜托各位了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wxshzf
2005-07-11
打赏
举报
回复
mark
jerry
2005-06-06
打赏
举报
回复
楼上的办法都不能得到完整的窗口内容. 楼主误会我的方法了,我不是让你打印出来,这个消息发送给窗口是请求窗口将内容输出到你提供设备DC上. 其实并不是所有的窗口都会友好地响应这个消息. 而我检查 CView 的源代码, 它恰恰会响应这个消息. 所以你可以通过这个消息来获取视图的内容:
1) 创建一个 元媒体设备:
HDC hdc = GetDC(NULL);
int cxMms = GetDeviceCaps (hdc, HORZSIZE);
int cyMms = GetDeviceCaps (hdc, VERTSIZE);
int cxPix = GetDeviceCaps (hdc, HORZRES);
int cyPix = GetDeviceCaps (hdc, VERTRES);
ReleaseDC(NULL, hdc);
CRect rcImg;
rcImg.left = 0;
rcImg.top = 0;
rcImg.right = (1000) * cxMms * 100 / cxPix; // 指定足够大的尺寸(象素要换算成 HIMETRIC)
rcImg.bottom = (1000) * cyMms * 100 / cyPix; // 指定足够大的尺寸
hdc = CreateEnhMetaFile(NULL, NULL, &rcImg, (LPSTR)NULL);
2) 向指定的窗口发送 WM_PRINT 消息:
::SendMEssage(hView, WM_PRINT, (WPARAM)hdc, (LPARAM(PRF_CLIENT));
3) 分析元文件格式,就可以得到,VIEW的输出内容.
可通过 EnumEnhMetaFile 来实现. 参考:
http://linxixi.8u8.com/win32prog/Contents/Page18.html
4) 关闭 DC, 或者,保存到文件, 或者输出到 什么地方(屏幕, 打印机, 位图...)
DeleteEnhMetaFile(hdc);
whtech
2005-06-06
打赏
举报
回复
万一这个窗口北方到某个应用程序的后面,或者被最小化了,怎么办?并且好像不是用鼠标指,而是把整个窗口内的都取出来,定时移动鼠标?
icelight
2005-06-06
打赏
举报
回复
有一个比较难的办法。
就是HOOK WINDOWS的写TEXT的系统API,然后往你要监视的客户端写一个点,“弄脏”它,WINDOWS会重写该区域,然后你的钩子就能拦截到它上面的文字了。
其实,这也是屏幕取词的思路。
whtech
2005-06-06
打赏
举报
回复
orbit(走了走了) 我enumchildwindow已经遍历到了它的窗口,不用用GetWindowText得到里面的文字,里面是它自己画的文本,我没办法得到,金山词霸可以。
krh2001(边城浪子)不能让他自己打印,因为我需要将它的数据处理后才打印出来,
jerry
2005-06-06
打赏
举报
回复
向找到的窗口发送 WM_PRINT 消息,让它自己将内容打印出来就是了
吹泡泡的小猫
2005-06-06
打赏
举报
回复
先用EnumWindows遍历所有窗口,找到工控程序的主窗口,然后用EnumChildWindows遍历所有子窗口,找到窗口类名是你用spy看到的view 类,然后用GetWindowText得到窗口内的文本
不过,如果窗口内容不是文本对象或是程序自己画的文本就没办法用GetWindowText
whtech
2005-06-06
打赏
举报
回复
自己up
koko1998
2005-06-06
打赏
举报
回复
mark
jerry
2005-06-06
打赏
举报
回复
metafile 是一种特殊格式,不仅仅是图片, 事实上,它是记录的 API 绘图函数的调用和参数, 如果将它用文本格式来描述的话,那就是一系列的绘图指令, 就象下面这样子:
1)DrawText,120,12,"asdfgh",flag; 指令+参数
2)SelectObject, pen, 1,... ;
....
n)BitBlt,0,0,100,123,{位图数据};
...
具体格式我给你的那个连接都说得很清楚了.
象上面这样的指令都可以通过 API 函数枚举出来, 然后就可以判断这些绘图指令和参数了,
比如要提取其中输出的文本, 只要检测那些画文字指令的参数就能得到.
whtech
2005-06-06
打赏
举报
回复
krh2001(边城浪子)
研究你提供的资料好久,看的还是云里雾里,稍微看出的一点名堂是,metafile好像是图像格式的,我需要的是文字,难道还要做OCR?
BruceJiang
2005-06-06
打赏
举报
回复
关注
java源码包---java 源码 大量 实例
util实现Java图片水印添加功能,有添加图片水印和
文字
水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
Python3使用xpath爬原创力
文档
Python3使用xpath爬原创力
文档
准备工作源代码 准备工作 首先,我们进入原创力
文档
官网,随便点击一篇pdf文章,进入如下
界面
: 然后点击“好的,开始阅读”进入全屏
界面
。接着,按“F12”进入开发者工具;点击开发者...
Excel VBA实现从多篇Word
文档
内抓取文本框内内容(书接上一篇博客)
我在上一篇博客《VBA摘取Word图形(Shapes)内
文字
》里验证了遍历doc
文档
内图形——尤其是文本框内内容的可行性。指出了文本框是形状(shape)而不是段落(paragraph)需要区别对待这一点。内容很简单直白,有兴趣的...
word@tips官方
文档
和教程@软件
界面
介绍@功能区自定义@拼写检查@AI润色改进@ 图片顶部上方插入
文字
分节符(section break) 下一页分节符(next page) 连续分节符(Continuous) 偶数页(奇数页)分页分节符 word@tips官方
文档
和教程@软件
界面
介绍@功能区自定义@拼写检查@AI润色改进@ 图片顶部上方插入
文字
word
文档
和...
需求
文档
(PRD
文档
)
产品设计是一个由抽象的概念到具体形象化的处理过程,通过
文字
或图像等方式将我们规划的产品需求展现出来。它将产品的某种目的或需求转换为一个具体的物理或工具的过程,把一种计划、规划设想、问题解决的方法,通过...
界面
15,980
社区成员
115,900
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章