http://community.csdn.net/Expert/topic/3685/3685085.xml?temp=.6859705有合适答案,另开贴给分300分啊

解决方案 »

  1.   

    windows中在内存中有个窗口句柄队列,
    里面有每个窗口的指针,
    获取窗口的指针后,可以利用API函数获取文本区的英文单词,
    然后进行翻译。
      

  2.   

    呵呵,刚刚看了一个文件,现考贝贴下来,希望代码所有者莫怪!
    现付下:
    屏幕抓字的基本原理 
    用“鼠标钩子”或“定时器”得到鼠标的位置,如果鼠标移动了,那么在鼠标位置下放置一个很小的窗口,(在我的程序中此窗口高度为1,长度为1,小得象针尖一样)windows系统会发出WM_PAINT消息,指示IE,NETSCAPE等应用程序重绘屏幕,在IE,NETSCAPE等应用程序响应WM_PAINT时,会调用TextOut(),ExtTextOut()等API函数来绘制TEXT,如果我们在IE,NETSCAPE等应用程序的堆栈中拦截到TextOut(),ExtTextOut()的参数,就实现了“屏幕抓字”。第二课 相关背景知识
    鼠标钩子函数简介 
    屏幕抓字可以采取“鼠标钩子”或“定时器”来得到鼠标的位置。“鼠标钩子”响应速度比较快,但编程技术也比较麻烦,现就“鼠标钩子”做一简介。鼠标钩子函数也可叫做鼠标消息过滤器,是一种回调(CALLBACK)函数,由系统调用。如果用SetWindowsHook或SetWindowsHookEx安装了鼠标钩子函数的地址,每当在屏幕上移动鼠标时,系统便将控制权交给鼠标钩子函数,这样便使我们能够有机会在鼠标钩子函数内部截获各种鼠标消息,在这些消息还没有送达应用程序队列之前,显示它们,改变它们或直接传给下一个缺省鼠标钩子函数。注意,鼠标钩子函数截获的是系统级消息,而不是单个应用程序队列内的窗口消息;系统发给每个应用程序队列的鼠标消息都可以用鼠标钩子函数来截获。VC的Spy和Delphi的WinSpy均安装了钩子函数用来截获各种系统级的消息,其中就包括鼠标钩子函数,键盘钩子函数,窗口钩子函数等。我们可以通过安装鼠标钩子函数来仿制一个自己的SPY,当鼠标移动时,我们立即获得系统(包括非抢先的Windows3.1和抢先Windows9x)的控制权,在鼠标钩子函数内部实时地截获鼠标消息,显示鼠标的位置和状态以及鼠标下窗口的局柄,标题栏,窗口类,窗口过程地址等。当然也可在鼠标钩子函数内调用InvalidateRect(),InvalidateRgn()来获得屏幕上鼠标下的单词。
      

  3.   

    我找的资料,你参考一下,应该有值的借签的地方:一.基础知识首先想编这种程序需要一些基础知识。会用Vc++,包括16/32位。精通Windows API特别是GDI,KERNEL部分。懂汇编语言,会用softice调试程序,因为这种程序最好用softice调试。二.基本原理在Window 3.x时代,windows系统提供的字符输出函数只有很少的几个。TextOutExtTextOutDrawText......其中DrawText最终是用ExtTextOut实现的。所以Windows的所有字符输出都是由调用TextOut和ExtTextOut实现的。因此,如果你可以修改这两个函数的入口,让程序先调用你自己的一个函数再调用系统的字符输出,你就可以得到Windows所有输出的字符了。到了Windows95时代,原理基本没变,但是95比3.x要复杂。开始的时候,一些在windows3.x下编写的取词软件仍然可以是使用。但是后来出了个IE4,结果很多词典软件就因为不支持IE4而被淘汰了,但同时也给一些软件创造了机会,如金山词霸。其实IE4的问题并不复杂,只不过它的输出的是unicode字符,是用TextOutW和ExtTextOutW输出的。知道了这一点,只要也截取就可以了。不过实现方法复杂一点,以后会有详细讲解。现在又出了个IE5,结果词霸也不好用了,微软真是#^@#$%$*&^&#@#@..........我研究后找到了一种解决办法,但还有些问题,有时会取错,正在继续研究,希望大家共同探讨。另外还有WindowsNT,原理也是一样,只是实现方法和95下完全不同。三.技术要点要实现取词,主要要解决以下技术问题。1.截取API入口,获得API的参数。2.安全地潜入Windows内部,良好地兼容Windows的各个版本3.计算鼠标所在的单词和字母。4.如果你在Window95下,做32位程序,还涉及Windows32/16混合编程的技术。