C++中如何使用钩子来获取AfxWnd42中的文字信息
各位C++大神,我想问一下,如何利用钩子来获取AfxWnd42中的文字信息,我想读取一个手写软件备选字中的那些文字信息。
就像有个工具叫做TextCatch那样,它可以读取到AfxWnd42的文字信息
大神们,求指导!!感激不尽!! C++ ?钩子
[解决办法]
你提的需求本来就是在开空白支票,要实现的话工作量是无限大。如果你要支持的每一个程序的作者对残疾人都友好的话,可以通过IAccessibility来获得窗口的文字。但是如果人家不实现标准的接口的话,那么就没有标准的方法去获取文字——要模式识别,样本也得有个模式才行,样本范围是无限的话,就不要提什么模式了。
既然人家要直接从CWnd派生,说明人家的行为是不标准的,你要显示逻辑的话也只有反向工程每个你想支持的程序,比如判断人家是不是在WM_PAINT里面重绘(用DirectX和OpenGL的不会处理这消息),哪个窗口显示文字(你指定的顶层窗口很可能不是负责显示内容的窗口),重绘的时候是否重绘了整个窗口(通常重绘的时候只更新Invalid区域),重绘窗口的时候都使用了哪些API来输出文字,这些API的输出对象是窗口DC还是内存DC等等。你反向工程获得的这些知识,在程序的下一个版本中可能失效——比如人家可能升级到了MFC的新的版本,你的针对MFC 4.2的代码就会失效。