日期:2014-05-18  浏览次数:20811 次

菜鸟倾所有的800分提问:关于hook textout的问题
我想抓取另一个程序中的某个控件上的文本,那个程序肯定不是c#写的,
我需要监视控件上的警告信息,然后根据内容不同做处理。
但是用spy++抓取发现程序中显示的文本跟抓到的caption不一致 
之前发了几个帖子,说是可能是自定义控件或者用textout输出的,提议用hook textout的方式来抓取 
本人菜鸟,现在也没有多少精力来研究这个问题,所以请大家帮忙!在此先感谢了! 

现在已经找到了一个c# hook api的例子,是hook mouse的。 
我想请问几个问题: 
1.如果想改称hook testout的,需要怎么来改?大体都什么地方需要修改呢? 
2.例子中安装钩子的时候传入的一个参数WH_MOUSE_LL=14 
  那现在我hook textout的话应该传入什么参数呢? 
3.回调函数中如何取得textout的文本呢? 

给解释一下也行,给点代码多加些注视也行,不胜感激阿! 
解决问题的话,最后的800分全给。 

今天是2007年的最后一天了,祝所有今天还在CSDN上的CSDNer新年快乐!

------解决方案--------------------
up
------解决方案--------------------

http://codesky.net/showhtml/10310.htm
http://www.pediy.com/bbshtml/BBS4/kanxue201.htm
是要用钩子。但是不是你所想的WINDOWS提供的SetHook这个钩子。Windows编程是不存在你所想的HOOK某个API函数 如 textout 这种机制的。这个所谓的钩子,借用其意而已,是要自己想办法,就是首先用用GetProcAddress取到textout (你要HOOK的函数)的地址,然后保存入口地址,然后用JMP跳转到你自己代码,在你自己的代码里你就可以做你想做的事了。。WINDOWS HOOK也需要,是为了跟踪鼠标的位置。。同取词的关系不大。

另外取词的代码要用C,汇编。

------解决方案--------------------
很明显, 对方这么做的目的, 就是为了不让你钩取文本,
它不是一普通控件, 不能使用GetWindowText(), 同样, 你也能在钩到TextOut后, 可能还是无法获得文本,
因为它的文本很可能做为图形画在上面
------解决方案--------------------
比较深奥 友情UP
------解决方案--------------------
学习
帮楼主顶下!!!!!!!!
接个分!!!!!!!!11111