by [email protected] from http://hi.baidu.com/tombkeeper 因为发现CE-Star的中文支持很勉强,尤其是在文件名和一些网络相关的程序里。所以最后还是费了一些功夫,自己搞定了内核中文化,现在可以极度完美地支持中文。那么也就不再需要CE-Star了。但是CE-Star里的中文输入法还是需要的。因为目前除了那个,我还不知道有什么其他可以在HPC 2000上用的基于键盘的拼音输入法。所以得把CE-Star解剖一下,扒出输入法来。没想到在扒输入法的过程中,发现了一个很出乎意料的事情。 首先我需要确认哪些文件是用于外挂中文的。于是我在一个硬重置过的干净系统上,只安装CE-Star,然后一个个地把CE-Star安装上来的文件和注册表项删掉,删一个就Reset一次。这么一个一个删,到最后只剩键盘驱动和字体文件了,居然那些中文软件还能正常使用! 难道在键盘驱动里也能搞外挂中文?于是我反汇编了那个键盘驱动wxekbdrx.dll。这个文件极其简单,连我这个接触ARM汇编还不到24小时的人也敢断定这个文件和中文没有任何关系。于是我就把这个文件也从系统上删了。 Reset之后,中文菜单居然还能显示!而现在的系统和没有装CE-Star前的唯一区别就是有中文字体文件和注册表里FontLink设置。 我又想到了歇洛克·福尔摩斯的那句话:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。 也就是说,至少在Windows CE 3.0上,只要有中文字体文件,并在注册表里设置了相应的FontLink,就可以直接使用大部分中文界面的软件和处理中文。 因为这个结论实在和我之前的看法和一般的常识有较大冲突,所以我做了一个确认试验:把系统硬重置,手工拷贝中文字体文件,并设置FontLink,然后Reset。果不其然,中文仍然没问题。或者说,至少我测试的这几个软件没问题:MDict、JDict、Total Commander、HaaliReader。MDict和JDict都可以正常显示中文词典数据,HaaliReader也可以正常阅读中文文档,甚至gb2312范围外的字符也没问题。 后来我想明白了:Windows CE中非常广泛地使用了Unicode。譬如说Win32 API中通常同时提供ANSI和Unicode版本,如CreateProcessA和CreateProcessW,但是Windows CE中一般只提供Unicode版本。应用程序的菜单、字符串资源等也基本上都是Unicode。既然全都是Unicode了,那么自然就天下大同了。 不过毕竟Windows CE还不是一个纯Unicode的环境,譬如说文件名。有些程序也并不使用Unicode来处理字符,譬如说QQ。所以CE-Star的“汉化”效果并不很理想问题也就在这里。 上面说了半天,都是副产品。今天的正题是要扒CE-Star的拼音输入法,这个就没什么太多可说的了。只需把下面这些文件全部拷贝到\Windows目录下: gbf2uc.tab hzattr.dat pinyin.dll sung14.ttc winxe.exe wxecode.dll wxecore.dll wxekbdr.dll wxekbdrx.dll wxesetup.exe Xpinyin.dat Xpinyin.phr 然后运行wxesetup.exe进行设置,并在\Windows\Startup\里建立winxe.exe的快捷方式。Reset之后,就可以使用输入法了。
http://hi.baidu.com/tombkeeper - 选录
My HPC Project - 解剖CE-Star的奇遇
2007-09-25链接