登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦想之鹰的天空

天高任鸟飞......放飞....心情..........放飞.....梦想

 
 
 

日志

 
 

自制王码五笔字型输入法安装包  

2007-10-17 14:24:02|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

喜欢玩软件的朋友一定经常遇到RePack的软件。所谓RePack,一般是针对原有软件不足进行优化(比如汉化、打补丁、增加插件等)并重新打包成安装程序,使用起来更加顺手。究竟RePack是如何进行呢?这次就请北京的张伟朋友给大家演示一下。此外,限于版面本文略有删节,完整文章电子版及最终王码五笔字型输入法安装包可在http://www.cfan.com.cn/11program/200423/tioclk.html下载。喜欢Visual C++朋友可以按部就班,跟着文章一步步操作。

  Windows XP没有自带五笔字型输入法,虽然网上相关输入法很多,但一方面有些版本是共享软件,另一方面也许很多五笔字型输入法的老用户最习惯用的还是老牌的“王码五笔字型输入法86/98版”。

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

1.拷贝输入法文件(从Office XP光盘中或已经安装了“王码五笔字型输入法”的电脑中提取)

2.增加注册表项

3.重启后通过控制面板添加输入法

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

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

准备素材

  先试着从Office XP光盘中提取“王码五笔字型输入法”的输入法文件。通过Windows查找功能第一张安装盘中查找与“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目录)。而主要的输入法文件(*.IME)和码表文件(*.MB)在Windows 9x下存放于\Windows\SYSTEM目录中,在NT系列Windows系统中存放于\Windows\SYSTEM32目录中。

相关API函数

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

1.DWORD GetVersion(VOID)

  该函数返回与当前使用的Windows系统版本有关的信息。可通过判断返回值最高位是否为1来判断当前是用的系统是NT/2000/XP还是9x/ME。

2.BOOL CopyFile(LPCTSTR lpExistFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);

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

3.HKL ImmInstallIME(LPCTSTR lpszIMEFileName, LPCTSTR lpszLayoutText);

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

4.BOOL ImmIsIME(HKL hKL);

  该函数判断hKL指向的输入法是否有效。可以用ImmInstallIME函数的返回值作为该函数参数,通过函数返回值来判断输入法是否安装成功。

创建工程并添加代码

1.打开Visual C++ 6.0,通过菜单“File→New”新建名为“WINWB”的“Win32 Application”工程,单击“OK”。

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

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

4.通过菜单“Insert→Resource”添加一个新的Dialog资源。

5.调整Dialog资源的若干属性。在Dialog的任意空白区域双击鼠标左键打开属性对话框,在属性对话框的Gerneral选项卡中更改ID为“IDD_MAIN”、 Caption属性为“王码五笔字型输入法安装程序”。单击Font按钮,更改字体为宋体9号(这是简体中文版XP的标准字体型号)。单击More Styles选项卡,选中Center属性,使对话框能在屏幕中居中显示。

6.关闭属性对话框,回到资源编辑界面。删掉系统自动添加的“Cancel”按钮并更改“OK”按钮的Caption属性为“安装”。

7.添加一个新的Static Text控件,打开属性对话框更改Caption属性为“请选择输入法版本:”。

8.添加一个新的List Box控件,打开属性对话框更改ID为“IDC_LIST”,并更改它的Selection属性为“Multiple”。

9.适当调整控件的大小和位置,完成资源创建(见图)。

 

 

10.通过菜单“Project→Add to Project→New”添加一个“C++ Source File”代码文件,命名为“WINWB”。

11.在新添加“WINWB.CPP”文件中输入程序代码,代码(略)。

制作安装包

  在菜单“Build→Set Active Configuration”设置工程配置为“Win32 Release”,然后进行编译、连接。将编译、连接后生成的可执行文件\Release\winwb.exe与前面提取出来的14个王码五笔字型输入法文件放在同一目录中,我们的王码五笔字型输入法全自动安装程序就完成了。但作为一个小功能程序,需要携带15个文件,未免有些不太方便。同时也为了使我们的程序看上去更专业点,我们可以使用一些压缩软件或者安装包制作工具来将它制作成一个单一文件的软件安装包,这样也可以方便携带和使用。

  这里推荐使用Windows 2000/XP自带的一个安装包制作工具──IExpress,它采用微软的CAB压缩文件格式,能生成自解压缩文件,是一款小巧、免费的安装包制作工具。

具体制作步骤如下:

1.在开始菜单的运行中键入“iexpress”,单击确定打开IExpress程序。

2.保持默认选项“Create new Self Extraction Directive file”,单击“下一步”继续。

3.保持默认选项“Extract files and run an installation command”,单击“下一步”继续。

4.进入“Package title”界面,在编辑框中输入“解压缩文件”,这是将生成的安装包解压缩时出现的对话框的标题栏,可以随意设定。输入完成后单击“下一步”继续。

5.保持默认选项“No prompt”,单击“下一步”继续。

6.保持默认选项“Do not display a license”,单击“下一步”继续。

7.进入“Packaged files”界面,单击“Add”按钮,在打开文件对话框中选中王码五笔字型输入法安装程序的所有15个文件,单击“下一步”继续。

8.进入“Install Program to”,在“Install Program”下拉式组合框中选中“WINWB.exe”,单击“下一步”继续。

9.保持默认选项“Default(recommended)”,单击“下一步”继续。

10.保持默认选项“No message”,单击“下一步”继续。

11.进入“Package Name and Options”界面,单击“Browse”按钮选择安装包存放位置和文件名。这里仍然使用“WINWB.EXE”。注意使用这个文件名时不要将安装包放在安装程序所在目录,以免和我们制作的安装程序WINWB.exe重名。单击“下一步”继续。

12.进入“Configure restart”界面,选中“No restart”,单击“下一步”继续。

13.进入“Save Self Extraction Directive”界面,选中“Don't save”,单击“下一步”继续。

14.进入“Create package”界面,单击“下一步”完成设置工作并开始制作安装包。

15.单击完成结束安装包制作。

  现在,王码五笔字型输入法安装包就算制作完成了。本程序在Windows XP Profession(SP1)简体中文版、Visual Studio 6.0(SP6)英文企业版下调试通过。在Windows 98 SE简体中文版下运行通过。

  评论这张
 
阅读(395)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018