社区
Delphi
帖子详情
高手请进来
tohail
2003-09-21 11:08:13
如何实现屏幕取词的功能,比如金山词霸用鼠标在屏幕上的某一个汉字或者英文单词鼠标单击,汉字和单词自动出现在编辑框中,比如tedit等控件中,分不够在加,不懂的不要UP谢谢合作
...全文
129
14
打赏
收藏
高手请进来
如何实现屏幕取词的功能,比如金山词霸用鼠标在屏幕上的某一个汉字或者英文单词鼠标单击,汉字和单词自动出现在编辑框中,比如tedit等控件中,分不够在加,不懂的不要UP谢谢合作
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
PrgmLover
2003-09-23
打赏
举报
回复
要实现取词,主要要解决以下技术问题。
1.截取API入口,获得API的参数。
2.安全地潜入Windows内部,良好地兼容Windows的各个版本
3.计算鼠标所在的单词和字母。
4.如果你在Window95下,做32位程序,还涉及Windows32/16混合编程的技术。
取词的过程:
0 判断鼠标是否在一个地方停留了一段时间
1 取得鼠标当前位置
2 以鼠标位置为中心生成一个矩形
3 挂上API钩子
4 让这个矩形产生重画消息
5 在钩子里等输出字符
6 计算鼠标在哪个单词上面,把这个单词保存下来
7 如果得到单词则摘掉API钩子,在一段时间后,无论是否得到单词都摘掉API钩子
8 用单词查词库,显示解释框。
很多步骤实现起来都有一些难度,所以在中国可以做一个完善的取词词典的人屈指可数
说如何挂钩子:
所谓钩子其实就是在WindowsAPI入口写一个JMP XXXX:XXXX语句,跳转到自己的代码里。
步骤如下:
1.取得Windows API入口,用GetProcAddress实现
2.保存API入口的前五个字节,因为JMP是0xEA,地址是4个字节
3.写入跳转语句
这步最复杂
Windows的代码段本来是不可以写的,但是Microsoft给自己留了个后门。
有一个未公开函数是AllocCsToDsAlias,
UINT WINAPI ALLOCCSTODSALIAS(UINT);
你可以取到这个函数的入口,把API的代码段的选择符(要是不知道什么是选择符,就先
去学学保护模式编程吧)传给他,他会返回一个可写的数据段选择符。这个选择符用完
要释放的。用新选择符和API入口的偏移量合成一个指针就可以写windows的代码段了。
这就是取词技术的最核心的东东,不止取词,连外挂中文平台全屏汉化都是使用的这种
技术。现在知道为什么这么简单的几句话却很少知道了吧?因为太多的产品使用他,太
多的公司靠他赚钱了。
这些公司和产品有:中文之星,四通利方,南极星,金山词霸,实达铭泰的东方快车,
roboword,译典通,即时汉化专家等等等等。。。。还有至少20多家小公司。他们的具体
实现虽然不同,但大致原理是相同的。
PrgmLover
2003-09-23
打赏
举报
回复
转载:
“鼠标屏幕取词”技术是在电子字典中得到广泛地应用的,如四通利方和金山
词霸等软件,这个技术看似简单,其实在windows系统中实现却是非常复杂的,总
的来说有两种实现方式:
第一种:采用截获对部分gdi的api调用来实现,如textout,textouta等。
第二种:对每个设备上下文(dc)做一分copy,并跟踪所有修改上下文(dc)的
操作。
第二种方法更强大,但兼容性不好,而第一种方法使用的截获windowsapi的
调用,这项技术的强大可能远远超出了您的想象,毫不夸张的说,利用windowsapi
拦截技术,你可以改造整个操作系统,事实上很多外挂式windows中文平台就是
这么实现的!而这项技术也正是这篇文章的主题。
截windowsapi的调用,具体的说来也可以分为两种方法:
第一种方法通过直接改写winapi 在内存中的映像,嵌入汇编代码,使之被
调用时跳转到指定的地址运行来截获;第二种方法则改写iat(import address table
输入地址表),重定向winapi函数的调用来实现对winapi的截获。
第一种方法的实现较为繁琐,而且在win95、98下面更有难度,这是因为虽
然微软说win16的api只是为了兼容性才保留下来,程序员应该尽可能地调用32位
的api,实际上根本就不是这样!Win 9x内部的大部分32位api经过变换调用了同
名的16位api,也就是说我们需要在拦截的函数中嵌入16位汇编代码!
PrgmLover
2003-09-23
打赏
举报
回复
快结贴哦
tohail
2003-09-22
打赏
举报
回复
那位高手能不能给我一段示范代码阿 我急用谢谢,有马上给分结帖
tohail
2003-09-22
打赏
举报
回复
到 真得没有人回答我问题啊
nyf1220
2003-09-21
打赏
举报
回复
用hook技术,不过,不会,超级猛可里有个介绍的
tohail
2003-09-21
打赏
举报
回复
bluenightsky 能不能给我一个一个示范代码啊
bluenightsky
2003-09-21
打赏
举报
回复
这其实就是API钩子
bluenightsky
2003-09-21
打赏
举报
回复
方法:
直接替换系统函数前5个字节,用jmp+我自己的函数地址替换,这样一旦系统函数调用就会跳到我自己的函数,首先恢复系统函数前5个字节,运行完我自己的函数,照样运行系统函数,然后再用jmp+我自己的函数地址替换系统函数前5字节
hiflower
2003-09-21
打赏
举报
回复
可以取得鼠标位置的窗口句柄,然后取得该窗口的内容
没做过 :)
tohail
2003-09-21
打赏
举报
回复
nyf1220(浅水游虫) 哪儿有下载的能告诉我嘛?谢谢
nyf1220
2003-09-21
打赏
举报
回复
说过了,超级猛料里有例子,自己看!
tohail
2003-09-21
打赏
举报
回复
我到真的没有人懂啊
tohail
2003-09-21
打赏
举报
回复
到没有高手来给俺看看啊:(((((( 伤心中
发展基础软件与转基因:走出去,
请进来
6月6日,中国电子报刊登文章,题为“普华软件接手中科红旗客户服务,致力抗国产OS大旗”,读后有感。 坦言之,国内基础软件与转基因技术都比较落后,谈不上由什么人“抗大旗”的问题。在发展国内基础软件与转基因技术方面,我们需要的政策是:走出去,
请进来
,而非由什么人“扛大旗”。 老实说,在国外,Linux与DNA(基因)的研究起步较晚,在国内,两者基本停滞不前。现在,
中国食品电商元宇宙“走出去”“
请进来
”双向发力
一系列“
请进来
”“走出去”举措背后,都是桐庐县商务局针对电子商务各个环节和个体,不断优化探索更加定制化、精细化服务的成果,桐庐县商务局相关负责人表示,今年该局将继续发挥好政府“搭台”作用,促进电商与产业融合发展,内联产业、外接市场,打造稳链、强链、拓市新渠道,为电商高质量发展作出积极贡献。今年3月召开的全省服务贸易和电子商务年度工作会议强调,全省电商工作要以推动电子商务高质量发展为核心,着力抓好电商与产业融合发展等工作,进一步完善电商生态和管理服务体系,优化发展环境。请读者仅做参考,并请自行承担全部责任。
如果你是亏损者
请进来
看看
如果你是亏损者,
请进来
看看现在我来把一些亏损严重至今股票还种在地里的新股民的共性讲个明白,请新入市或准备入市的朋友来对号入座: 一、永远满仓,保证金余额只要够买一手基金都不落空。 二、不知道在买入股票时还有止赢止损位,一旦股价跌破买入价就永不卖出,直到下一轮牛市解套为止, 三、市场在反弹时永远按自己的成本来计算盈亏,从不计算自己被套的个股从低点上来已经有N多抄底的人赚钱,不到自己
请进来
,走出去!武工院与武汉猴面鱼科技等展开校企合作
为了推动校企合作,促进专业建设,进一步推动专业发展同市场接轨。近期,武汉工程科技学院采取“
请进来
、走出去”的方式,与相关企业开展深入沟通交流,洽谈合作,为应用型人才培养和专业建设打下了很好的基础。 学校执行董事李林祥,党委副书记、副校长郭霖,相关职能处室负责人与学院代表一行7人到企业进行实地考察调研。 研组来到光谷科技港,分别同武汉猴面鱼科技有限公司、慧群靶向基因有限公司、武汉猴面鱼科技有限公司就新媒体产业和电竞产业人才培养做了深入交流,探讨如何结合企业和市场的需求,创新人才培养模式,找准学校、企业
喜欢嵌入式Linux的
请进来
喜欢嵌入式Linux的
请进来
,一起学习共同进步。68158867 24563544(已满)喜欢Linux技术的加这个群吧
Delphi
5,943
社区成员
262,941
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章