金山词霸的词库读取程序(补充)
好几天没有发帖子了,对不起各位支持我的朋友! // bow
因为这几天工作终于有了着落,在据了2个offer后,终于又收到了
一个不错的offer,难道是事不过三?不过同时还有一个很有希望、
也是我更加心仪的公司,现在正在催他们索取最后的结果。请大家
不要说我骑驴找马啦(幸好,驴也是一头好驴)。
奉上一篇《金山词霸词库读取程序补充》。
发表了《金山词霸词库读取程序》后,得到了不少朋友的支持。在那篇文章的
最后,我给自己提出了一个更加高的要求:如何读取单词的解释?因为直接使用
GetWindowText()是得不到的(原因未知)。昨天,我按照自己原来提出的思路
进行了这个工作:获取单词解释窗口的句柄,发送Ctrl+A和Ctrl+C,然后从剪贴板中读取。
1:使用Spy++跟踪单词解释窗口,跟踪Ctrl+A和Ctrl+C的消息,发现Ctrl+A有4个
消息:WM_KEYDOWN,WM_KEYDOWN,WM_KEYUP,WM_KEYUP。
2:程序中使用和读取单词解释一样的循环,不过不是使用GetWindowText(),而是向
窗口发送消息,但是...失败!不知道为什么,我发送4个消息后,会自动产生一个WM_CHAR
消息。实际上,WM_CHAR就是由WM_KEYDOWN和WM_KEYUP自动生成。于是我使用了SendMessage()
这样就会把自动生成的WM_CHAR消息延迟到我们发送的4个消息的最后,但是仍然无法从剪贴板
中得到数据。
3:放弃了发送键盘消息欺骗窗口的做法。换一种思路:用户可以使用鼠标右键菜单,选择“全选”;然后再使用鼠标右键菜单,选择“复制”,同样可以实现Ctrl+A和Ctrl+C的功能。嗯,听起来不错!
4:如何知道菜单项的菜单ID?相信许多朋友也做过:使用VC打开金山词霸的主程序:xdict.exe,
记住在打开文件窗口的“Open As”中选择“Resources”,即以资源方式打开,我们就可以看到
xdict.exe的资源了!可以知道:32791是“全选”的菜单ID,32775是“复制”的菜单ID。
5:修改程序,对每一个单词,向单词解释窗口发送32791和32775的WM_COMMAND的消息,结果...
剪贴板中还是没有数据。
6:其实没有太大的问题了:再次使用Spy++跟踪,发现这2个消息实际上是发送给金山词霸的主窗口,而不是直接发送给单词解释窗口的。OK,不用我多说了吧!
最后给出代码:
最后的讨论:
1:原来以为程序会把单词读取慢很多,实际也只慢了一倍左右(用时2个半小时)。:)
2:加快一点速度:不是每次读取解释后,就写入文件。建立一个内存缓冲,比如100K,每次读满
buffer后才写文件,应该可以加快一点速度。不要忘记最后关闭文件前也要把buffer的数据写入。
3:如何读取详细的解释?选择一个单词后,按<回车>键或者双击,单词解释窗口可以显示很长的
详细解释。这个工作会更加麻烦一点了,暂时我不再研究了(这次是真的!)。
注意:程序运行过程中,千万不要在其它程序中使用Ctrl+C,Ctrl+X的功能!!!
我写下此文时,无意中使用了一次Ctrl+C,结果粘贴时出来了某个单词的解释!看来
可能有某个单词的解释被我的Ctrl+C覆盖了!痛苦!程序运行需要2个半小时,以后
发现了哪个单词的解释有问题再修改吧!
金山词霸的词库读取程序(补充)相关推荐
- 金山词霸的词库读取程序
啊哈!金山词霸的词库读取程序完成! 经过这个周末2天的奋战,终于完成了一个金山词霸的词库读取程序!当然,中间还看了2场欧洲杯,以及和老婆玩了几回坦克大战,否则可以更快完成吧! 做这个程序的动机很久了, ...
- 关于利用金山词霸的词库
我机器上装了金山词霸2003.一直对金山词霸的词库很感兴趣,在网上搜了一下,发现没有什么有价值的资料.但是其词库文件的头部有明显xml迹象.网上一篇文章也说其实质是xml定义的数据库文件,那么它的音频 ...
- 取金山词霸词库的程序
这是我学C++的时候写的 当时没贴出来怕影响不好 现在看来是想错了 呵呵 供大家参考参考 有点小问题 忘高手点拨 不明白 为什么 每几十条记录就重复3条2条4条不等 不报错 代码如下: #includ ...
- 行业词库收集程序已经开源
前些天国庆在家,没网上. 地址在 http://code.google.com/p/wordseeker/ 采用Apache协议,对商业友好.
- 自编记单词小程序项目(自定义词库,多功能)C/C++语言实现
一款方便实用又简洁的记单词小程序,自定义单词库,多功能协助记忆!!! github地址:https://github.com/Knock-man/Memorizing-words-program 如今 ...
- 折腾词库,一个词库互转程序
我在之前写过一个小程序,用于实现QQ拼音.搜狗拼音.谷歌拼音和百度手机拼音输入法词库的互转,文章地址是:http://www.cnblogs.com/studyzy/archive/2009/12/3 ...
- bat 等待输入_深蓝词库转换 - 简单的输入法词库转换工具
深蓝词库转换 是一款 输入法词库转换 软件,支持包括 搜狗拼音.QQ拼音.Windows 10 微软拼音 在内的超过 20 种的输入法工具和词库.该程序支持 批量转换(一次拖拽多个词库文件,或者按住 ...
- 30_ElasticSearch IK分词器配置文件 以及自定义词库
ElasticSearch IK分词器配置文件 以及自定义词库 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) ...
- 最新最全的stardict词库文件.
各位同学中,使用有道桌面词典的一定不少吧, 是不是觉得自己的词典查的东西不够专业,不够详细? 从下面的词库中添加适合的你... 享受吧.. Stardict 中文词库文件 朗道英汉字典5.0 4354 ...
最新文章
- Delphi_01_控制台版HelloWorld
- 使用 cert-manager 签发免费证书
- Mysql,ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- 【强化学习】Policy Gradients代码注释版本
- 一、mongodb数据库系列——介绍和安装 简单使用 增删改查
- 【实时+排重】摆脱渠道统计刷量作弊行为
- [Note]Linux查看ASCII字符表
- 订单金额等字段设置decimal时,要禁止为负数
- CentOS和AIX查看系统序列号
- 树莓派配置文档config.txt说明
- 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-855 国行/港行/美版】-【V10.0 Android-Q-TK1】...
- broadcom linux网卡驱动下载,Broadcom Bcm57xx芯片网卡驱动Linux下安装方法
- ISO27000系列标准
- 线阵相机、镜头及光源的选型
- cound(count函数)
- 《上帝给我一个任务,叫我牵一只蜗牛去散步》
- Java混元功法_[转载]太乙混元功简介
- 霍普金斯计算机专业研究生如何,约翰霍普金斯大学计算机科学研究生项目详情!_托普仕留学...
- 使用PRSice进行多基因风险评分分析
- 优秀领导者必须具备的4大特质