知道金山词霸的原理,但不知道金山快译是怎么实现全屏翻译的

解决方案 »

  1.   

    呵呵,是我没表达清楚,翻译的过程不想知道,只是想搞清楚,金山快译是怎么得到屏幕上所有的单词的,难道是它给每一个窗口都发一个更新的消息吗?如果是的话,windows还有很多不可见的窗口,如果每个都发的话,是不是很浪费系统资源?以上只是个人猜测,没有根据的,请高手指点.
      

  2.   

    晕,这个简单啊,枚举窗口,查找子窗口,发送get_text消息得到文字..
      

  3.   

    我也不会,建议你一本书<Delphi 深入Windows核心编程>
    里面屏幕取词的功能,
      

  4.   

    to 海洋 
    我上边说过了,windows有很多不可见窗口 ,如果每一个都发的话,那系统资源的使用率岂不是太高了?
    to 笨笨
    你说那本书我以前见过,里边实现的取词功能是利用鼠标注册其它进程的,难不成,我要用程序控制鼠标走遍全屏?呵呵,说笑了.
      

  5.   

    七八年前的“南极星”之类的软件就能实现全屏翻译了!!!
    >>如果是的话,windows还有很多不可见的窗口
    可以检查可见性感觉词霸是 hook textout之后,仍将原来的参数传给 textout 调用, 而快译则是用自己修改过的参数代入 textout 输出
    其他 api 类似
      

  6.   

    是hookapi,在www.2ccc.com代码可以参考
      

  7.   

    我找的资料,你参考一下,应该有值的借签的地方:一.基础知识首先想编这种程序需要一些基础知识。会用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混合编程的技术。