永发信息网

金山词霸的屏幕取词是什么原理

答案:1  悬赏:40  手机版
解决时间 2021-02-16 03:19
我想用C++编个应用程序,之中有个功能,要取得鼠标指向的文字(所有窗口的),和金山词霸的屏幕取词一样的作用.
了解屏幕取词的,或有成熟构想的,把原理说一下.谢谢了.
最佳答案
一.基础知识 首先想编这种程序需要一些基础知识。 会用Vc++,包括16/32位。 精通Windows API特别是GDI,KERNEL部分。 懂汇编语言,会用softice调试程序,因为这种程序最好用softice调试。 二.基本原理 在Window 3.x时代,windows系统提供的字符输出函数只有很少的几个。 TextOut ExtTextOut DrawText ...... 其中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混合编程的技术。 今天先到这里吧!最好准备一份softice for 95/98和金山词霸,让我们先来分析一下别人是怎么做的。 欢迎与我联系 E-Mail:yeedong@163.net 主题 屏幕取词技术系列讲座(二) 作者 亦东 很抱歉让大家久等了! 我看了一些人的回帖,发现很多人对取词的原理还是不太清楚。 首先我来解释一下hook问题。词霸中的确用到了hook,而且他用了两种hook其中一种是Windows标准hook,通过SetWindowHook安装一个回调函数,它安装了一个鼠标hook,是为了可以及时响应鼠标的消息用的和取词没太大关系。 另一种钩子是API钩子,这才是取词的核心技术所在。他在TextOut等函数的开头写了一个jmp语句,跳转到自己的代码里。 你用softice看不到这个跳转语句是因为它只在取词的一瞬间才存在,平时是没有的。 你可以在TextOut开头设一个读写断点 bpm textout 再取词,就会找到词霸用来写钩子的代码了。 至于从cjktl95中dump出来的未公开函数是和Windows32/16混合编程有关的,以后我会提到他们。 我先来讲述取词的过程, 0 判断鼠标是否在一个地方停留了一段时间 1 取得鼠标当前位置 2 以鼠标位置为中心生成一个矩形 3 挂上API钩子 4 让这个矩形产生重画消息 5 在钩子里等输出字符 6 计算鼠标在哪个单词上面,把这个单词保存下来 7 如果得到单词则摘掉API钩子,在一段时间后,无论是否得到单词都摘掉API钩子 8 用单词查词库,显示解释框。 很多步骤实现起来都有一些难度,所以在中国可以做一个完善的取词词典的人屈指可数。 其中0,1,2,7,8比较简单就不提了。 先说如何挂钩子: 所谓钩子其实就是在WindowsAPI入口写一个JMP XXXX:XXXX语句,跳转到自己的代码里。 步骤如下: 1.取得Windows API入口,用Get
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
使命召唤8联机,左上角的小地图无法显示了
小说一个章节多少字合适
死光皮鱼能吃吗
【火烈鸟的英文】...火鸟、不死鸟形象一般为
江岸区武汉市公安局江岸区交通大队二中队怎么
求 情侣网名 男名 带新或鑫 女名带欢
上班 看着别人闲 而自己一早忙到晚 心里老是
纸质图书数字化加工中需要加工的图书元数据,
隔壁空调外机在我窗户下方,对我又什么危害
京藏高速公路/Z208(路口)这个地址在什么地方
药流60天,发现子宫宫角有残留,是否要做
王者荣耀猴子地狱火重做什么时候上正服
在农田生态系统中,生产者是指BA. 农民B. 农
微卷适合戴眼镜的女生吗
成都职业技术学院2015单招分数
推荐资讯
电梯型号品种代号中字母“L”表示的意思是()
梦见电闪雷鸣
男人眉毛看相算命图解
我在淘宝商城买东西,是残次品,我要退货,写
网络连接里面只剩一个本地连接了
三国杀中,把手牌中的装备牌装备到装备区算不
网络电视盒子能看直播吗?
调制解调器(MODEM)包括调制和解调功能,其
我哥跟一群人打死了一个人,坐牢了是无期投刑
手机贴膜的店在哪里进货的?
洛宁县洛阳洛宁县图书馆这个地址怎么能查询到
金载勋跆拳道场地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?