打印

c#+TE6410+WINCE6.0实现中文输入法

[复制链接]
434|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小蘭|  楼主 | 2018-9-6 13:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
WINCE上面自带没有中文输入法,需要自己加进去,办法很多,例如拷贝文件然后修改注册表然后重新编译烧写系统,而我这个办法呢,有点邪门!呵呵呵!直接C#代码来执行!

我这里准备的是万能拼音输入法的WINCE版本,默认是一个CAB安装文件Wnpy.ARMV4.CAB,首先第一步要找到这个输入法安装后增加了哪些文件,存放在哪个目录(一般默认Windows),用解压软件解压出来,有一些类似00WnpyCE.002的分卷压缩文件,找到_setup.xml,这个就是CAB安装文件的执行过程,用记事本打开,有一些这样的节点:

<characteristic type="FileOperation">

<characteristic type="%CE1%\wnpy" translation="install">

<characteristic type="MakeDir" />

<characteristic type="WnpyUnReg.exe" translation="install">

<characteristic type="Extract">

<parm name="Source" value="WNPYUN~1.001" />

</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("CLSID", true);



            //创建万能拼音注册表项并赋值

            RegistryKey PinYinKey = CLSIDKey.CreateSubKey("{85EDDFAC-6799-4C3E-A627-E3CC1D28E0B1}");

            PinYinKey.SetValue("Default", "万能拼音", RegistryValueKind.String);



            //创建子项并赋值

            RegistryKey PinYinKey1 = PinYinKey.CreateSubKey("DefaultIcon");

            PinYinKey1.SetValue("Default", "\\NandFlash\\wnpy\\WnpyCE.dll,0", RegistryValueKind.String);



            RegistryKey PinYinKey2 = PinYinKey.CreateSubKey("InProcServer32");

            PinYinKey2.SetValue("Default", "\\NandFlash\\wnpy\\WnpyCE.dll", RegistryValueKind.String);



            RegistryKey PinYinKey3 = PinYinKey.CreateSubKey("IsSIPInputMethod");

            PinYinKey3.SetValue("Default", "1", RegistryValueKind.String);



            //拷贝文件到Windows目录

            CopyFile("Total_MB.idx");

            CopyFile("WnpyCE.dll");

            CopyFile("findIndex.idx");

            CopyFile("Total_MB.txt");

        }



        static void CopyFile(string FileName)

        {

            try

            {

                if (!File.Exists("\\Windows\\" + FileName))

                {

                    File.Copy("\\NandFlash\\wnpy\\" + FileName, "\\Windows\\" + FileName, true);

                }

            }

            catch { }

        }



        #endregion

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

451

主题

463

帖子

1

粉丝