WINCE上面自带没有中文输入法,需要自己加进去,办法很多,例如拷贝文件然后修改注册表然后重新编译烧写系统,而我这个办法呢,有点邪门!呵呵呵!直接C#代码来执行!
我这里准备的是万能拼音输入法的WINCE版本,默认是一个CAB安装文件Wnpy.ARMV4.CAB,首先第一步要找到这个输入法安装后增加了哪些文件,存放在哪个目录(一般默认Windows),用解压软件解压出来,有一些类似00WnpyCE.002的分卷压缩文件,找到_setup.xml,这个就是CAB安装文件的执行过程,用记事本打开,有一些这样的节点:
<characteristic type=&quot;FileOperation&quot;>
<characteristic type=&quot;%CE1%\wnpy&quot; translation=&quot;install&quot;>
<characteristic type=&quot;MakeDir&quot; />
<characteristic type=&quot;WnpyUnReg.exe&quot; translation=&quot;install&quot;>
<characteristic type=&quot;Extract&quot;>
<parm name=&quot;Source&quot; value=&quot;WNPYUN~1.001&quot; />
</characteristic>
看到没,WnpyUnReg.exe,这个根据名称理解应该是反注册工具,依次可以找到包含如下文件WnpyUnReg.exe,WnpyReg.exe,WnpySetup.dll(这三个存放在用户安装时选定的目录下面的wnpy文件夹下)WnpyCE.dll(输入法核心文件,所有调用算法都在里面),Total_MB.txt(输入法的数据库文件,可以用记事本打开,里面就是词汇,拼音对应汉字),findIndex.idx(索引文件,快速检索词汇),Total_MB.idx(索引文件),(这四个文件放在Windows目录下),这样的话,我们首先安装一次,然后从对应文件夹拷贝这些文件出来,放到目录wnpy,输入法一般还会在注册表中注册,所以必须在注册表中增加对应的项,C#中注册表操作很方便,RegistryKey,需要引入命名空间,using Microsoft.Win32;方法如下:#region 注册万能拼音输入法
public static void LoadPinYin()
{
//创建注册表项
RegistryKey BaseKey = Registry.ClassesRoot;
RegistryKey CLSIDKey = BaseKey.OpenSubKey(&quot;CLSID&quot;, true);
//创建万能拼音注册表项并赋值
RegistryKey PinYinKey = CLSIDKey.CreateSubKey(&quot;{85EDDFAC-6799-4C3E-A627-E3CC1D28E0B1}&quot;);
PinYinKey.SetValue(&quot;Default&quot;, &quot;万能拼音&quot;, RegistryValueKind.String);
//创建子项并赋值
RegistryKey PinYinKey1 = PinYinKey.CreateSubKey(&quot;DefaultIcon&quot;);
PinYinKey1.SetValue(&quot;Default&quot;, &quot;\\NandFlash\\wnpy\\WnpyCE.dll,0&quot;, RegistryValueKind.String);
RegistryKey PinYinKey2 = PinYinKey.CreateSubKey(&quot;InProcServer32&quot;);
PinYinKey2.SetValue(&quot;Default&quot;, &quot;\\NandFlash\\wnpy\\WnpyCE.dll&quot;, RegistryValueKind.String);
RegistryKey PinYinKey3 = PinYinKey.CreateSubKey(&quot;IsSIPInputMethod&quot;);
PinYinKey3.SetValue(&quot;Default&quot;, &quot;1&quot;, RegistryValueKind.String);
//拷贝文件到Windows目录
CopyFile(&quot;Total_MB.idx&quot;);
CopyFile(&quot;WnpyCE.dll&quot;);
CopyFile(&quot;findIndex.idx&quot;);
CopyFile(&quot;Total_MB.txt&quot;);
}
static void CopyFile(string FileName)
{
try
{
if (!File.Exists(&quot;\\Windows\\&quot; + FileName))
{
File.Copy(&quot;\\NandFlash\\wnpy\\&quot; + FileName, &quot;\\Windows\\&quot; + FileName, true);
}
}
catch { }
}
#endregion |