金山词霸的词库读取程序(补充)

原创 2004年06月26日 21:13:00
好几天没有发帖子了

好几天没有发帖子了,对不起各位支持我的朋友! // 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场欧洲杯,以及和老婆玩了几回坦克大战,否则可以更快完成吧!做这个程序的动机很久了,因为一直在背英语单词,如果可以有一个完...
  • tjulmy
  • tjulmy
  • 2008年06月18日 09:44
  • 1709

金山词霸的词库读取程序

啊哈 啊哈!金山词霸的词库读取程序完成! 经过这个周末2天的奋战,终于完成了一个金山词霸的词库读取程序!当然,中间还看了2场欧洲杯,以及和老婆玩了几回坦克大战,否则可以更快完成吧! 做...
  • ecai
  • ecai
  • 2004年06月26日 21:11
  • 3253

取金山词霸词库的程序

这是我学C++的时候写的 当时没贴出来怕影响不好 现在看来是想错了 呵呵 供大家参考参考 有点小问题 忘高手点拨 不明白 为什么 每几十条记录就重复3条2条4条不等 不报错代码如下: #include...
  • tjgmail
  • tjgmail
  • 2006年08月31日 17:56
  • 1700

API HOOK 金山词霸取词功能原理

本文由本人整理  1 屏幕抓词       屏幕抓词(或者叫动态翻译)是指随着鼠标的移动,软件能够随时获知屏幕上鼠标位置的单词或汉字,并翻译出来提示用户。它对於上网浏览、在线阅读外文文章等很有帮助作用...
  • wanfustudio
  • wanfustudio
  • 2006年10月19日 22:16
  • 2550

sap金山词霸词库

sap金山词霸词库直接导入即可使用方便大家使用英文的client下载链接http://download.csdn.net/source/809987...
  • fanweijun
  • fanweijun
  • 2008年11月26日 11:35
  • 378

金山词霸读取程序的源代码

首先声明,这段代码是针对《金山词霸2003》的,金山词霸的其它版本需要稍为修改。 源代码说明: 1:请自己去下载LoadDll,并且研究它的使用(只需要简单修改命令行): http://www.cod...
  • ecai
  • ecai
  • 2004年06月27日 12:29
  • 4167

制作trados词库的工具及其方法

制作trados词库的工具及其方法 百度空间_应用平台 2010-12-15 | 阅:  转:  |  分享     ...
  • yangxiaojun9238
  • yangxiaojun9238
  • 2013年01月08日 17:09
  • 4902

关于利用金山词霸的词库

我机器上装了金山词霸2003。一直对金山词霸的词库很感兴趣,在网上搜了一下,发现没有什么有价值的资料。但是其词库文件的头部有明显xml迹象。网上一篇文章也说其实质是xml定义的数据库文件,那么它的音频...
  • bd_lyy791128
  • bd_lyy791128
  • 2007年03月04日 22:11
  • 1162

提取金山词霸2005的词库

UINT m_ListCtrlHandle = 0x206EE;//显示单词的列表框的句柄,用spyXX得到 UINT m_FrameHandle = 0x206E6;//程序主窗口的句柄  if( ...
  • zhugay
  • zhugay
  • 2007年07月04日 13:19
  • 917

修复金山词霸只有最大化和最小化两种窗口状态的问题

首先,关闭金山词霸接着,修改XDICT.INI 中 WindowPos成:WindowPos=0,2,-32000,-32000,-1,-1,308,290,946,704 ...
  • looyo
  • looyo
  • 2006年08月17日 14:31
  • 2281
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:金山词霸的词库读取程序(补充)
举报原因:
原因补充:

(最多只允许输入30个字)