Codejie's C++ Space

Using C++

LingosHook:Lingoes生词本第八版


    虽然关于List的问题窗口句柄等问题一直搞不定,但还是先把手里的上传吧,这些问题就当作已知Bug存在了,希望影响不大(心虚~)。新版本这里下载。
    此次更新涉及较多,主要分散在下面几点:
    1. 支持直接HTML数据的保存和读取;这样如果没有Vicon和Langdao两种词典,一样可以使用了,只是体验上会少些功能;
    2. 针对上面的功能,相应地增加了两个配置项;
    3. 增加了生词发音;现在可以听了(这个我喜欢~);
    4. 结果界面中添加了和生词列表一样的右键菜单;菜单使用说明见这里
    5. 支持模糊定位Lingoes窗口,希望能减少Hook失败率;

    这几天的主要工作都在修修补补HTML数据的直接存取上,消耗了大量时间;而语音和菜单部分加起来不到两小时,比想象的简单需多。不多扯了,上图解说~

    先看看新增的配置:


    蓝色框内的两项为新增项,是用于对直接HTML数据存取做配置的,两个配置项是互斥的;
    1. 第一项(Ignore Dictionary Analysis Error)指定当HTML数据到达时,先尝试使用词典解析,如果解析失败,比如没有能支持的词典数据,则将HTML数据直接保存下来;
    2. 第二项(Close Dictionary Analysis Process)指定当HTML数据到达是,不进行词典解析过程,直接将HTML数据保存下来;

    选中任何一项,都会自动选中'HTML Data Process' 中的两个配置项(Storage,Loading),理由很简单,如果不选中这两个,HTML数据是没法显示的。。。两个配置项的区别在于是否调用词典解析过程,对于完全不使用Vicon或Langdao的人来说,不调用词典解析,可以稍微稍微提高点性能。。。两个配置项默认是关闭的,因为不经过解析的数据,只能在HTML界面中查看,且可能会有大量无用数据,体验不好,如下图所示。

     直接HTML数据存取很好,很强大!由于抓取跟解析无关,跟直接截屏差不多,因此强大到对付中文或者其它语言文字一样有效,这个是我开始没有想到的。。。

    结果界面中的右键ContextMenu菜单,功能和生词列表中的右键菜单功能一样;


   如上图,看见么,支持Speak了!虽然很简单,但至少能发音了,我喜欢。。。(打算给自己做个版本,支持Hotkey发音,或者自动发音,嘿嘿。。。)


  前面说到的bug会在配置了直接HTML数据读取情况下,使用Hotkey时出现,如下图:


    输入的是‘bugxxx’,查询到的是‘bugs’,期望抓取的生词应该也是‘bugs’,但由于没法访问到Lingoes的单词列表数据,只能将就先取输入框的错误数据了。这个问题以后看吧,我现在完全没头绪如何修正。

    关于窗口句柄的模糊查询,看看下面代码就明白了~
    原来的代码:
HWND hwnd = ::FindWindow(_T("Afx:400000:2400b:10011:0:0"), NULL);

    修改后的代码:
                wchar_t buf[64];
                size_t s 
= 0;
                HWND hwnd 
= ::FindWindowEx(NULL, NULL, NULL, NULL);
                
while(hwnd != NULL)
                
{
//                    wcsnset(buf, 0, 64);
                    ::GetClassName(hwnd, buf, 64);
                    s 
= wcslen(buf);
                    
if(s > 17)
                    
{
                        
if(wcsncmp(buf, _T("Afx:400000:2400b:"), 17== 0)
                        
{
                            
break;
                        }

                    }


                    hwnd 
= ::FindWindowEx(NULL, hwnd, NULL, NULL);
                }

    增加了循环查询,性能会。。。唉,我也不想,但真的不知道为什么这个句柄的值会变化。。。



<---讲故事的分割线--->

    实际这篇随笔早写好了,但每次要提交时,总是出现一个不得不改的bug,比如列表bug,比如句柄变化等等,到今天,实在没耐心了,传上再说吧。。。


<---讲心情的分割线--->

    LingosHook将Open Source了。。。但无聊的xxx限制了code.google.com的访问,害的我不得不翻墙走,这也导致open的进展很慢。。。我实在想不明白,封了VOA就算了,code.google.com又咋了?闭关锁国会导致闭门造车,而闭门造车会导致科技落后,而科技落后会被挨打的,历史已经多次验证了这条理论,为什么xxx现在还做这样的事情。。。

posted on 2010-04-20 23:24 codejie 阅读(2377) 评论(2)  编辑 收藏 引用 所属分类: 轮子精神LingosHook

评论

# re: LingosHook:Lingoes生词本第八版 2010-07-08 16:00 chassic

弄了一个小时,终于可以用了,赞一个,还开源了
让我弄简明的安装吧  回复  更多评论   

# re: LingosHook:Lingoes生词本第八版 2010-07-08 16:54 codejie

@chassic
能用了就好。。。
程序是用VC20008Express开发的,需要其运行库,担心未安装此运行库的系统无法运行,所以才使用VS自带的安装工程。如果你能帮忙做个安装,甚至来个‘绿色版’,那真是要辛苦你了,谢谢~  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜