C++中如何使用钩子来获取AfxWnd42中的文字信息

kaixinmile 2013-07-28 11:01:38
各位C++大神,我想问一下,如何利用钩子来获取AfxWnd42中的文字信息,我想读取一个手写软件备选字中的那些文字信息。
就像有个工具叫做TextCatch那样,它可以读取到AfxWnd42的文字信息
大神们,求指导!!感激不尽!!
...全文
404 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaixinmile 2013-08-01
  • 打赏
  • 举报
回复
好的,谢谢,这样我们就晓得要往哪个方向走了
蒋晟 2013-07-30
  • 打赏
  • 举报
回复
你提的需求本来就是在开空白支票,要实现的话工作量是无限大。如果你要支持的每一个程序的作者对残疾人都友好的话,可以通过IAccessibility来获得窗口的文字。但是如果人家不实现标准的接口的话,那么就没有标准的方法去获取文字——要模式识别,样本也得有个模式才行,样本范围是无限的话,就不要提什么模式了。 既然人家要直接从CWnd派生,说明人家的行为是不标准的,你要显示逻辑的话也只有反向工程每个你想支持的程序,比如判断人家是不是在WM_PAINT里面重绘(用DirectX和OpenGL的不会处理这消息),哪个窗口显示文字(你指定的顶层窗口很可能不是负责显示内容的窗口),重绘的时候是否重绘了整个窗口(通常重绘的时候只更新Invalid区域),重绘窗口的时候都使用了哪些API来输出文字,这些API的输出对象是窗口DC还是内存DC等等。你反向工程获得的这些知识,在程序的下一个版本中可能失效——比如人家可能升级到了MFC的新的版本,你的针对MFC 4.2的代码就会失效。
kaixinmile 2013-07-30
  • 打赏
  • 举报
回复
引用 4 楼 jiangsheng 的回复:
估计这个软件反向工程了很多现有程序。
这个工作量也太大了吧,如果单从dll注入来说,有没有可能实现获取WM_PAINT绘制的那些文字?
kaixinmile 2013-07-30
  • 打赏
  • 举报
回复
引用 5 楼 ForestDB 的回复:
换个思路,也许不是hook,只是用了OCR而已。
有没有其他方法(除了ocr)获取到AfxWnd42中的文字信息
ForestDB 2013-07-29
  • 打赏
  • 举报
回复
换个思路,也许不是hook,只是用了OCR而已。
蒋晟 2013-07-29
  • 打赏
  • 举报
回复
估计这个软件反向工程了很多现有程序。
kaixinmile 2013-07-28
  • 打赏
  • 举报
回复
引用 1 楼 jiangsheng 的回复:
API是IAccessibility,当然应用程序可以不实现这个接口,这时你就要反向工程对应程序了。
AfxWnd42是一个通用的窗口类名,在里面输出文字的方式没有什么规律可言。


谢谢您的回复,可是为什么像textcatch这个软件可以抓取到文字?
如果我们自己实现,应该从哪方面入手?期待您的再次解答!
kaixinmile 2013-07-28
  • 打赏
  • 举报
回复
谢谢您的回复,可是为什么像textcatch这个软件可以抓取到文字?

如果我们自己实现,应该从哪方面入手?期待您的再次解答!
蒋晟 2013-07-28
  • 打赏
  • 举报
回复
API是IAccessibility,当然应用程序可以不实现这个接口,这时你就要反向工程对应程序了。 AfxWnd42是一个通用的窗口类名,在里面输出文字的方式没有什么规律可言。

64,677

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧