我想抓取另一个程序中的某个控件上的文本,
用spy++抓取发现程序中显示的文本跟抓到的caption不一致
之前发了几个帖子,说是可能是自定义控件或者用textout输出的,提议用hook textout的方式来抓取
本人菜鸟,现在也没有多少精力来研究这个问题,所以请大家帮忙!在此先感谢了!我不会用vc,用的c#,现在已经找到了一个c# hook api的例子,是hook mouse的。
我想请问几个问题:
1.如果想改称hook testout的,需要怎么来改?大体都什么地方需要修改呢?
2.例子中安装钩子的时候传入的一个参数WH_MOUSE_LL=14
  那现在我hook textout的话应该传入什么参数呢?
3.回调函数中如何取得textout的文本呢?给解释一下也行,给点代码多加些注视也行,不胜感激阿!
解决问题的话,最后的800分全给。今天是2007年的最后一天了,祝所有今天还在CSDN上的CSDNer新年快乐!

解决方案 »

  1.   

    http://www.xiaozhou.net/ReadNews.asp?NewsID=517
    上面那个连接里有,HOOK TextOut的具体代码(屏幕取词),还有Demo
      

  2.   

    也不定是textout写的文字。这个如果还是得判断。!!!
    如果不是标题,还是挺麻烦的。假如它是一个图片怎么办。
      

  3.   

    获得控件的文本这个不难,你只需要得到控件的句柄,然后向该控件发送消息来GetWindowText或者GetDlgItemText获取控件文本。这个句柄可以用spy++查看,或者用FindWindow之类的函数。
      

  4.   

    回楼上的,现在可以肯定不是图片,
    但是也不是caption,因为spy++是看不到文字的
      

  5.   

    楼主问错地方了。不过好像C#和VC语句差不多,起码API函数都是一样的,应该可以看懂
      

  6.   

    想办法得到控件句柄就能得到文本内容,用EnumWindow和FindWindowEx应该能够实现
      

  7.   

    用c#很难
    首先,要做一个dll。因为要hook的是另一个进程的TextOut。光这个c#就做不了。
      

  8.   

    楼主问错地方了。不过好像C#和VC语句差不多,起码API函数都是一样的,应该可以看懂
    ----------------------
    原理应该是一样的吧,主要是c#那边写这个东西的人太少了,可能很少人知道这方面的知识
    关于那个dll我肯定会用vc去写,说明我用的c#只是想让大家别一下给我一堆代码,看去吧,就完了,呵呵,我看不懂啊
    最好的情况是能给我一个例子,然后给我加上一些注释,我自己来转换成c#,这就行了。想办法得到控件句柄就能得到文本内容,用EnumWindow和FindWindowEx应该能够实现
    --------------------------
    这个好像不太行
    用spy++是可以得到句柄的,但是看不到空间上的内容,用getwindowstext和sendmessage得到的都是caption,是一个空值。
    用c#很难 
    首先,要做一个dll。因为要hook的是另一个进程的TextOut。光这个c#就做不了。
    --------------------------
    恩,这个肯定是用vc来写,不过我现在是不知道该怎么动手去写这个东西,呵呵。
      

  9.   

    to : zhoujianhei 
    已经可以抓到文本了,但是现在的问题是抓到的文本是一个字一个字显示的
    一个字一行,而且一句话比如有10个字,可能抓到两个,可能抓到五个,是隔几个字抓一个字的
    再帮我看下吧。
    多谢多谢!