论文部分内容阅读
上一期我们结束了网站推广的话题,本期开始将为大家介绍插件开发。什么是插件?这其实就是为主体软件(如Office)提供附加功能的一种特殊程序。它有点像N合1螺丝刀,无论是需要一字的还是十字的,只要挑一个合适的螺丝刀头(插件)替换即可,螺丝刀本身(主体软件)则不用改动。
软件的这一机制,不经意间催生出一个庞大的插件市场。本系列中,我们就来为大家介绍三大领域近十类(包括办公软件、浏览器、网站等)最常用的插件开发流程,另外还会深入插件市场探寻它的“钱途”。本系列开篇,特邀金山软件Office插件开发大赛金奖得主与大家共享经验。
【芝麻开门】插件开发前的准备
现在让我们通过一个简单的例子,看看标准的插件开发流程。插件开发前,先要做一些准备工作。
第一步:选择开发平台
首先要确定插件开发的软件平台。今天介绍的插件基于金山公司的WPS Office平台,所以要先安装WPS Office(http://www.wps.cn)。相关插件开发资料,可以到http://bbs.wps.cn/thread-21864974-1-1.html下载。对于其他软件的插件开发,道理是一样的,也要安装相应软件并获取开发资料。
第二步:确定开发语言
接下来确定开发语言。尽量使用常见的且自己熟悉的开发工具,如VC++、VB、Java等。本文我选择的是C++ Builder 2007。
第三步:导入插件接口
导入相应的插件接口(由开发资料获悉)。启动C++ Builder,点击菜单“Component→Import Component”打开向导,选择“VCL for C++ Win32→Next→Import a Type Library”,继续下一步,找到以“Kingsoft”开头的五个类型库(见图1)。分别按向导提示导入,生成相应类型库的接口文件即可。
接下来点击菜单“File→New→Package-C++Builder”新建包项目,再点击菜单“Project→Add to project”添加前面生成并保存的所有文件(见图2)。然后保存当前工程为wps.cbproj并按Shift+F9键编译(如果有警告信息不用理会)。最后再点击菜单“Component→Install Packages”,导入刚刚才生成的包文件WPS.BPL即可。
【任务实战】编写自己的插件
接下来实战制作一个简单的插件。该插件的功能是:在WPS文字处理软件中添加一个工具条,上面有一个按钮,单击该按钮将在当前文档中自动插入“Hello world!”(句子可自定义)。
第一步:创建新插件项目
在C++ Builder中,点击菜单“File→New→Other”,选择“C++ Builder Projects→ActiveX”目录中的“ActiveX Library”类型的工程并确定。然后再次打开这一窗口,会发现多出了好些类型(见图3),这里选择“Automation Object”并确定。
在“New Automation Object”的“CoClass Name”中输入WpsAddinEXP1并确定。然后按Shift+Ctrl+S键保存Unit文件为Example_Main.cpp,保存工程文件为Example1.ccbproj。点击菜单“Project→Options”,在“Paths and Defines”中,把包文件所在的路径(如$(BDS)\imports\)分别增加到Include Path和Library Path中,点击OK保存。
第二步:编写代码
接下来该编写代码了,本例代码稍微有点长,我已打包放到http://work.newhua.com/cfan/201006/Example1.rar,大家可以下载参考,这里不再详细列出。
第三步:编译与配置插件
代码完成后,按Ctrl+F9编译生成插件Example1.dll。不过工作并没完成,还需要一个配置文件来说明此插件,WPS Office插件的配置文件实际就是一个XML文件,它的文件名必须遵循“[addon-name].[app-name].[lang].xml”这样的格式。
[addon-name]:插件模块的名称,必须和插件模块的文件名完全一致。如WpsAddonDemo.dll插件,[addon-name]为“WpsAddonDemo”。
[app-name]:插件支持的WPS模块,包括:wps、et、wpp、kso,其中kso表示支持WPS Office的所有模块。
[lang]:插件支持的语言版本,如1033、2052等。“0”表示支持所有语言。
假如Example1.dll插件支持WPS Office的WPS模块、简体中文,那么它的配置文件名称为“Example1.wps.2052.xml”。
配置文件中有一个重要的属性:ID。它是唯一标识这个插件的身份ID,需要与插件中的CLSID相一致,可以使用WPS开发工具中自带的ComClsid.exe来获得这个CLSID号:ComClsid.exe Example1.dll。本例得到的CLSID为{7E50F9C3-74E2-430A-858D-1B7263559D67}。填写好ID及其他相关属性后,保存配置文件到与Example1.dll同一个目录下就可以了。
OK!一个完整的插件完成了。运行“WPS文字”,在菜单“工具→插件平台”中点击“安装本地插件”,选择刚才保存的XML配置文件。这时会弹出一个“插件兼容检查”失败的提示,不理它,直接点击“继续”即可。回到WPS主界面,就可以看到我们自己创建的工具栏和按钮了(见图4)。点击按钮,将自动在当前文档中输入“Hello world!”,虽然简单,还是很酷吧。
开发趣话
这次的金山WPS插件大赛中,有两位小选手引起许多人的好奇,他们就是初中生刘亦煊及高一学生张帅舸。奇就奇在他们互不相识,是通过网络跨省合作的,并且获得了奖项。
问:你们是如何认识的?又是如何决定一起参加插件大赛的?
刘亦煊:有一次我在网上征求一个VB的manifest文件,是雅鸽帮了我,并加了QQ好友,我们相互学习渐渐成了好朋友。后来偶然从其他好友处知道了这个大赛,于是我们抱着“重在参与”的心态联合参加了。
问:这次的插件制作,有什么心得体会?
刘亦煊:这次的插件制作过程中,雅鸽提了一个非常实用的意见:用户在使用插件时,主要是看一些图形化的数据,而不是数字。所以,我们增加了速度变化图形统计表的功能。我认为,做一个实用的插件,更要注意用户对其功能的需求。还有我明白了做什么事,都要肯动脑筋,付出艰辛的劳动,才会有收获。
软件的这一机制,不经意间催生出一个庞大的插件市场。本系列中,我们就来为大家介绍三大领域近十类(包括办公软件、浏览器、网站等)最常用的插件开发流程,另外还会深入插件市场探寻它的“钱途”。本系列开篇,特邀金山软件Office插件开发大赛金奖得主与大家共享经验。
【芝麻开门】插件开发前的准备
现在让我们通过一个简单的例子,看看标准的插件开发流程。插件开发前,先要做一些准备工作。
第一步:选择开发平台
首先要确定插件开发的软件平台。今天介绍的插件基于金山公司的WPS Office平台,所以要先安装WPS Office(http://www.wps.cn)。相关插件开发资料,可以到http://bbs.wps.cn/thread-21864974-1-1.html下载。对于其他软件的插件开发,道理是一样的,也要安装相应软件并获取开发资料。
第二步:确定开发语言
接下来确定开发语言。尽量使用常见的且自己熟悉的开发工具,如VC++、VB、Java等。本文我选择的是C++ Builder 2007。
第三步:导入插件接口
导入相应的插件接口(由开发资料获悉)。启动C++ Builder,点击菜单“Component→Import Component”打开向导,选择“VCL for C++ Win32→Next→Import a Type Library”,继续下一步,找到以“Kingsoft”开头的五个类型库(见图1)。分别按向导提示导入,生成相应类型库的接口文件即可。
接下来点击菜单“File→New→Package-C++Builder”新建包项目,再点击菜单“Project→Add to project”添加前面生成并保存的所有文件(见图2)。然后保存当前工程为wps.cbproj并按Shift+F9键编译(如果有警告信息不用理会)。最后再点击菜单“Component→Install Packages”,导入刚刚才生成的包文件WPS.BPL即可。
【任务实战】编写自己的插件
接下来实战制作一个简单的插件。该插件的功能是:在WPS文字处理软件中添加一个工具条,上面有一个按钮,单击该按钮将在当前文档中自动插入“Hello world!”(句子可自定义)。
第一步:创建新插件项目
在C++ Builder中,点击菜单“File→New→Other”,选择“C++ Builder Projects→ActiveX”目录中的“ActiveX Library”类型的工程并确定。然后再次打开这一窗口,会发现多出了好些类型(见图3),这里选择“Automation Object”并确定。
在“New Automation Object”的“CoClass Name”中输入WpsAddinEXP1并确定。然后按Shift+Ctrl+S键保存Unit文件为Example_Main.cpp,保存工程文件为Example1.ccbproj。点击菜单“Project→Options”,在“Paths and Defines”中,把包文件所在的路径(如$(BDS)\imports\)分别增加到Include Path和Library Path中,点击OK保存。
第二步:编写代码
接下来该编写代码了,本例代码稍微有点长,我已打包放到http://work.newhua.com/cfan/201006/Example1.rar,大家可以下载参考,这里不再详细列出。
第三步:编译与配置插件
代码完成后,按Ctrl+F9编译生成插件Example1.dll。不过工作并没完成,还需要一个配置文件来说明此插件,WPS Office插件的配置文件实际就是一个XML文件,它的文件名必须遵循“[addon-name].[app-name].[lang].xml”这样的格式。
[addon-name]:插件模块的名称,必须和插件模块的文件名完全一致。如WpsAddonDemo.dll插件,[addon-name]为“WpsAddonDemo”。
[app-name]:插件支持的WPS模块,包括:wps、et、wpp、kso,其中kso表示支持WPS Office的所有模块。
[lang]:插件支持的语言版本,如1033、2052等。“0”表示支持所有语言。
假如Example1.dll插件支持WPS Office的WPS模块、简体中文,那么它的配置文件名称为“Example1.wps.2052.xml”。
配置文件中有一个重要的属性:ID。它是唯一标识这个插件的身份ID,需要与插件中的CLSID相一致,可以使用WPS开发工具中自带的ComClsid.exe来获得这个CLSID号:ComClsid.exe Example1.dll。本例得到的CLSID为{7E50F9C3-74E2-430A-858D-1B7263559D67}。填写好ID及其他相关属性后,保存配置文件到与Example1.dll同一个目录下就可以了。
OK!一个完整的插件完成了。运行“WPS文字”,在菜单“工具→插件平台”中点击“安装本地插件”,选择刚才保存的XML配置文件。这时会弹出一个“插件兼容检查”失败的提示,不理它,直接点击“继续”即可。回到WPS主界面,就可以看到我们自己创建的工具栏和按钮了(见图4)。点击按钮,将自动在当前文档中输入“Hello world!”,虽然简单,还是很酷吧。
开发趣话
这次的金山WPS插件大赛中,有两位小选手引起许多人的好奇,他们就是初中生刘亦煊及高一学生张帅舸。奇就奇在他们互不相识,是通过网络跨省合作的,并且获得了奖项。
问:你们是如何认识的?又是如何决定一起参加插件大赛的?
刘亦煊:有一次我在网上征求一个VB的manifest文件,是雅鸽帮了我,并加了QQ好友,我们相互学习渐渐成了好朋友。后来偶然从其他好友处知道了这个大赛,于是我们抱着“重在参与”的心态联合参加了。
问:这次的插件制作,有什么心得体会?
刘亦煊:这次的插件制作过程中,雅鸽提了一个非常实用的意见:用户在使用插件时,主要是看一些图形化的数据,而不是数字。所以,我们增加了速度变化图形统计表的功能。我认为,做一个实用的插件,更要注意用户对其功能的需求。还有我明白了做什么事,都要肯动脑筋,付出艰辛的劳动,才会有收获。