虽然关于
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现在还做这样的事情。。。