如何快速提高 Windows Mobile 切换输入法的速度

使用 Windows Mobile 系统的手机会发现在 切换输入法 的时候,系统往往会反应比较迟钝,甚至需要等上大概五秒钟才行,这里就教大家一个方法,虽然简单,但很管用。

对于不打算了解原理的只看这一句即可“将注册表 HKEY_CLASSS_ROOTCLSID 下面的所有项导出再导入即可”,对于想知道为什么的人可以将本文章看完 ^_^ 相信你会有所收获。

先从为什么输入法切换那么慢原因说起,这块还是从 Yonsm 的博客上看到的,如果不是亲眼所见,实在是不相信微软怎么会如此白痴。Windows Mobile Pocket PC 基于 Win CE 开发,分析切换输入法缓慢可能是在遍历系统所有输入法的算法中进行了大量的多余操作,再继续思考,输入法是被登记在注册表 HKEY_CLASSS_ROOTCLSID 键值下,看情形似乎使用 IsSIPInput=1 的 Value 标志,表示这是一个输入法,实在是对 MS 这种做法很难理解!键值 HKEY_CLASSS_ROOTCLSID 下面是登记系统所有 COM 组件的地方,当然非常多条目,枚举起来肯定非常慢,这点即使没有使用 PPC 而使用 PC 的人在展开系统注册表 HKEY_CLASSS_ROOTCLSID 键值的时候也会有感觉,下面的项是相当的多。

由此我们很容易想到,如何屏蔽某个输入法,即将要屏蔽输入法的 CLSID 删除或者将对应项下面的 IsSIPInputMethod 由 1 改成 0 即可,不过不太容易找喔,而且可能不同语言的 ROM 对应的值也不同。

这点也难怪,设计 Win CE 的小组又只用英文输入法,所以肯定没什么感觉,可苦了我们,特别是输网址和密码的时候会导致频繁切换输入法,这里顺便帮 A4 输入法做下广告,这是我用过的在 PPC 上最好用的非手写输入法,有需要的可以访问 http://www.a4user.com/ 下载。

还是回到标题上来,那么既然是 Win CE 系统本省算法的白痴导致这种结果,那该如何解决呢?对于系统算法我们是没办法了,但有个捷径可以相对提高一些速度,我还是喜欢从原理说起,大家知道 Windows Mobile 的系统是固化的 ROM 上的,而用户的配置信息及对系统所做的更改会保存在 STORAGE 里面,而多数 STORAGE 读取速度会比 ROM 要快,这就容易了,可以把 CLSID 部分存放到 STORAGE 里面就可以提高速度,那么如何做呢?其实很容易,将注册表 HKEY_CLASSS_ROOTCLSID 的所以键值导出再导入即可。因为导出之前这部分注册表在 ROM 中保存,重新导入以后系统会保存在 STORAGE 中。

操作过程中你可能会需要如下工具:

PHM Registry Editor 下载页面:http://www.phm.lu/Products/PocketPC/RegEdit/