金山快译是怎么实现全屏翻译的? 知道金山词霸的原理,但不知道金山快译是怎么实现全屏翻译的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,是我没表达清楚,翻译的过程不想知道,只是想搞清楚,金山快译是怎么得到屏幕上所有的单词的,难道是它给每一个窗口都发一个更新的消息吗?如果是的话,windows还有很多不可见的窗口,如果每个都发的话,是不是很浪费系统资源?以上只是个人猜测,没有根据的,请高手指点. 晕,这个简单啊,枚举窗口,查找子窗口,发送get_text消息得到文字.. 我也不会,建议你一本书<Delphi 深入Windows核心编程>里面屏幕取词的功能, to 海洋 我上边说过了,windows有很多不可见窗口 ,如果每一个都发的话,那系统资源的使用率岂不是太高了?to 笨笨你说那本书我以前见过,里边实现的取词功能是利用鼠标注册其它进程的,难不成,我要用程序控制鼠标走遍全屏?呵呵,说笑了. 七八年前的“南极星”之类的软件就能实现全屏翻译了!!!>>如果是的话,windows还有很多不可见的窗口可以检查可见性感觉词霸是 hook textout之后,仍将原来的参数传给 textout 调用, 而快译则是用自己修改过的参数代入 textout 输出其他 api 类似 是hookapi,在www.2ccc.com代码可以参考 我找的资料,你参考一下,应该有值的借签的地方:一.基础知识首先想编这种程序需要一些基础知识。会用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混合编程的技术。 ListView滚动条问题 请教调用不限定个数参数的问题 这是怎么回事啊?帮帮我把 [Help]子父窗口返回值问题 请教类型转换IUnknown->Variant 如何判断一个点是否在一个矩形内? 求救!! 各位朋友帮帮忙 紧急求助:怎么让一个函数等于另外一个函数。 这台移动PC是不是太贵了点? delphi 传感器采集器硬件接口疑问!请大侠指教! Delphi6用汇编如何访问类中的属性和方法 元旦快乐!
里面屏幕取词的功能,
我上边说过了,windows有很多不可见窗口 ,如果每一个都发的话,那系统资源的使用率岂不是太高了?
to 笨笨
你说那本书我以前见过,里边实现的取词功能是利用鼠标注册其它进程的,难不成,我要用程序控制鼠标走遍全屏?呵呵,说笑了.
>>如果是的话,windows还有很多不可见的窗口
可以检查可见性感觉词霸是 hook textout之后,仍将原来的参数传给 textout 调用, 而快译则是用自己修改过的参数代入 textout 输出
其他 api 类似