| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
王码五笔型输入法安装包
作者:佚名    文章来源:网络    点击数:    更新时间:2006-12-31
  Windows XP没有自带五笔型输入法,这对五笔型用户而言无疑是个大大的遗憾。网上的五笔型输入法虽然种类很多,也不乏优秀的版本,但一方面有些版本是共享软件需要注册,另一方面也许很多五笔型输入法的老用户最习惯用的还是老牌的“王码五笔型输入法86/98版”。

  微软的Office XP软件中包含了这个老牌的五笔型输入法,但如果用户并不使用Office XP中的任何组件,仅仅是为了使用“王码五笔型输入法”而运行Office XP安装程序,就显的有些小题大做了,更不用说是某些零时在外面用公用电脑而又想用五笔型输入法的情况。于是网上出现了很多简化的安装方法,大体上可以分为三个步骤:

  拷贝输入法文件(从Of还是9x/ME。示例代码fice XP光盘中或已经安装了“王码五笔型输入法”的电脑中提取)
  增加注册表项
  重启后通过控制面板添加输入法

  整个过程中拷贝输入法文件和增加注册表项可以用批处理和导入注册表文件来简化操作,但必须重启计算机才能在控制面板里添加输入法,这同样让使用者觉得比较烦琐。那么作为一个编程爱好者能不能通过写个小程序来实现在不重新启动计算机的情况下全自动的安装“王码五笔型输入法”呢(也就是即装即用)?答案是肯定的!因为微软的Office XP安装程序做到了,这就表示微软肯定留有一个专门用来安装输入法的接口,一般来说应该是一系列API函数。

  经过一番摸索,笔者在MSDN里找到了这个可以用来安装输入法的API:ImmInstallIME()。Ok,现在我们就开始利用这个API来实现自己的“王码五笔型输入法”全自动安装程序。

  一、准备素材
  我们先试着从Office XP光盘中提取“王码五笔型输入法”的输入法文件。通过Windows的查找功能在Office XP的第一张安装盘中查找与“WINWB”相关的文件,在OFFICE1.CAB中找到了一下14个文件:WINWB86.CHM.*、WINWB86.CNT.*、WINWB86.HLP.*、WINWB86A.IME.*、WINWB86A.MB.*、WINWB86W.IME.*、WINWB86W.MB.*、WINWB98.CHM.*、WINWB98.CNT.*、WINWB98.HLP.*、WINWB98A.IME.*、WINWB98A.MB.*、WINWB98W.IME.*、WINWB98W.MB.*,其中*是很长的一串由字母、数字和下滑线组成的序列(个人认为应该是微软为了校验文件内容的正确性而加上的内容为该文件效验码的后缀吧)。去掉这个长长的后缀,可以看到5种类型的文件。很明显,*.CHM、*.CNT和*.HLP是五笔型输入法的帮助文件,*.MB是码表文件,而*.IME是主要的输入法文件。其中*.IME和*.MB有文件名部分以A结尾和以W结尾两个版本,经过笔者试验证实了它们分别是ANSI和UNICODE两种版本的输入法文件。文件名部分以A结尾的文件适用于Windows 9x,以W结尾的文件适用于NT系列Windows系统。

  提取了输入法文件后必须让安装程序针对不同版本的操作系统将它们拷贝到正确的目录,以便调用API来进行输入法安装。笔者分别在安装了Office XP中自带的“王码五笔型输入法”的Windows 98SE和Windows XP操作系统中查找以上文件,发现帮助文件都存放在\WINDOWS\HELP目录中(这里假设Windows系统都安装在\WINDOWS目录)。而主要的输入法文件(*.IME)和码表文件(*.MB)在Windows 9x下存放于\WINDOWS\SYSTEM目录中,在NT系列Windows系统中存放于\WINDOWS\SYSTEM32目录中。

  二、相关API函数
  素材的准备工作已经完成,现在我们来看一下代码编写过程中需要用到的4个主要的API函数。

  2.1 GetVersion

  函数原型:

  DWORD GetVersion(VOID);
  该函数返回与当前使用的Windows系统版本有关的信息。可以通过判断返回值最高位是否为1来判断当前是用的系统是NT/2000/XP还是9x/ME。示例代码:

if (GetVersion() < 0x80000000)
  //NT/2000/XP
else
  //9x/ME
                       
  2.2 CopyFile

  函数原型:

  BOOL CopyFile(LPCTSTR lpExistFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);
  该函数将以lpExistFileName指向的字符串为文件名的文件复制为以lpNewFileName指向的字符串为文件名的新文件。这里的文件名可以包含文件路径。最后的参数bFailIfExists决定当新文件已存在时是否覆盖现有文件,如果为FALSE,则覆盖。示例代码:

CopyFile("c:\\a.txt", "d:\\b.txt", FALSE);
  以上代码将c盘下的a.txt文件复制到D盘下并命名为b.txt。如果已经存在b.txt,则覆盖原来的文件。

  2.3 ImmInstallIME

  函数原型:

  HKL ImmInstallIME(LPCTSTR lpszIMEFileName, LPCTSTR lpszLayoutText);
  这是制作“王码五笔型输入法”全自动安装程序的关键函数。函数的两个参数分别为输入法IME文件的文件名和在控制面板的是输入法选项中显示的输入法名称。函数调用后将返回一个被安装输入法的输入法标识符(或称做输入法句柄)。示例代码:

HKL hKL = ImmInstallIME("c:\\winwb86.ime", "王码五笔型输入法86版");
  以上代码将输入法文件c:\winwb86.ime安装到系统中,并命名为“王码五笔型输入法86版”。函数调用后返回安装的输入法的标识符,存放在hKL变量中。

  2.4 ImmIsIME

  函数原型:

  BOOL ImmIsIME(HKL hKL);
  该函数判断hKL指向的输入法是否有效。我们可以用ImmInstallIME函数的返回值作为该函数参数,通过函数返回值来判断输入法是否安装成功。示例代码:

if (ImmIsIME(hKL))
  //安装输入法成功
else
  //安装失败
  hKL为调用ImmInstallIME()后得到的输入法标识符。

  三、创建工程并添加代码

  1. 打开Visual C++ 6.0,通过菜单File - New新建一个名为“WINWB”的“Win32 Application”工程(如图1),单击“OK”。


  2. 在应用程序类型选择中选择“An empty project”(图2),单击“Finsish”。这样我们就新建好了一个空的Win32应用程序工程。

  3. 通过菜单Project - Add to Project - New添加一个“Resource Script”资源文件,命名为“WINWB”(如图3)。

  4. 通过菜单Insert - Resource添加一个新的Dialog资源(如图4)。

[1] [2] [3] 下一页


相关文章