WPS插件的实现和发布
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WPS插件的实现和发布
1. 关于WPS插件
关于WPS插件基于WPS的二次开发有很多方法,很多用户还习惯用WORD的VBA的方式来开发。
方便快捷的VBA开发方式带来便捷的同时也带来了安全隐患。
现在的宏病毒数不胜数,给用户带来很多麻烦。
从安全的角度考虑WPS Office 2005 虽然支持VBA开发,但是没有集成VBA(需要另行安装VBA)。
为了继续享受VBA快速编程的同时又要保证安全性,基于插件二次开发无疑是更好的选择。
很多编程语言(VC、VB、Delphi)都能开发WPS插件,其中VB 和VBA的语法,使用方法和习惯完全一致。
这里以VB为例,来说明WPS插件的实现和发布方法。
注:在WPS中WPS插件也称为“COM加载项”。
2. COM加载项的实现
COM加载项的实现主要依赖于COM加载项的接口,WPS的COM加载项是以add-in的机制来实现的,所以对应的接口是IDTExtensibility2。
所以实现COM加载项的核心就是实现IDTExtensibility2接口,然后在相关接口事件触发想要对WPS进行的操作。
先介绍WPS提供的二次开发接口组件及如何在VB中实现IDTExtensibility2库。
然后对IDTExtensibility2库的5个事件分别描述。
2.1. WPS的二次开发接口
为了保证很好的二次开发,在WPS Office三大套件提供API接口组件的同时还提供了公用层对象及add-in机制的接口组件。
WPS各
模块对应的接口文件如图1所示:
图 1 对象接口对应关系表
Ø 实现COM加载项需要引入IDTExtensibility2接口对应的组件(ksaddndr.dll);
Ø 增加工具条及按钮或者其他公用部分需要引入KSO接口对应的DLL组件(kso10.dll)。
Ø 实现WPS文字的二次开发需要引入WPS接口对应的文件(wpscore.dll);
Ø 实现WPS表格和WPS演示二次开发需要引入的组件(etapp.dll和wpcre.dll)。
所有接口组件都是相互独立的,可以根据自己要实现的内容自由组合。
备注:WPS二次开发API接口函数的说明请参考WPS二次开发API文档,在金山WPS官网上可以找到下载()
2.2. 在VB中实现IDTExtensibility2库
新建一个ActiveX dll工程,单击“工程|引用”菜单项,勾选Kingsoft Add-in Designer 复选框,设置对库的引用。
如果该库未在列表中出现,可以单击“浏览”并查找文件ksaddndr.dll 来添加该库。
默认情况下,该文件位于WPS程序安装目录的Office文件夹中。
在外接程序设计器类模块的“声明”部分,添加以下代码:
Implements IDTExtensibility2
在“代码”窗口中,单击“对象”框中的IDTExtensibility2。
它将该过程的模板添加到OnConnection事件中。
在“代码”窗口中,通过单击“过程”对话框中的其它4个事件过程,为这些事件过程创建事件过程模板。
分别为这5个事件过程添加代码或注释。
注意:必须使IDTExtensibility2界面接供的每个事件中都包括该事件过程模板。
如果您删除了任何事件过程,工程就将无法编译。
如果不在某个事件过程模板中添加代码,最好添加一个注释;使用一个单引号 (') 就足够了。
2.3. IDTExtensibility2事件
IDTExtensibility2 库提供了5 个可用来操纵加载项以及宿主应用程序的事件:OnConnection、OnDisconnection、OnAddInsUpdate、OnStartupComplete 和OnBeginShutdown。
下面简单说明每个事件的含义。
2.3.1. OnConnection 事件
OnConnection 事件在COM 加载项加载(连接)时发生。
可以在OnConnection 事件中实现对WPS的操作,其中使用加载项有以下几种方式:
1.当应用程序启动时加载;
2.用户在“COM 加载项”对话框中加载加载项;
在发布的时候,注册表的LoadBehavior键值表示加载行为,通常是3(启动时加载)。
如果想让用户在“COM 加载项”对话框中加载加载项的话键值是8。
2.3.2. OnDisconnection 事件
OnDisconnection 事件在卸载COM 加载项时发生。
可以使用OnDisconnection 事件过程运行能够恢复由加载项对应用程序所作任何更改的代码,或者执行常规清除操作。
卸载加载项和加载行为有对应的几种方式:
1.用户清除“COM 加载项”对话框中加载项旁边的复选框。
2.WPS程序关闭时卸载。
如果加载项的加载行为设置为“启动”,则WPS 程序再次启动时,就会重新加载加载项。
2.3.3. OnStartupComplete 事件
当WPS程序完成启动例程时,就会发生 OnStartupComplete 事件。
事件只在“启动时加载COM加载项”的加载行为下发生。
如果此事件确实发生,则它将在 OnConnection 事件之后发生。
可以使用OnStartupComplete 事件与应用程序交互、且在应用程序完成加载后才应运行的代码。
例如,如果要显示一个使用户选择在启动WPS文字程序时选择公文模板的窗体,可以将该代码放到OnStartupComplete 事件过程中。
2.3.4. OnBeginShutdown 事件
在WPS程序关闭而 COM 加载项仍处于加载状态的情况下,如果
WPS程序开始其关闭例程时就会发生OnBeginShutdown 事件。
如果此事件确实发生,它将在 OnDisconnection 事件之前发生。
用户关闭WPS程序时,可以使用 OnBeginShutdown 事件过程运行代码。
例如,可以运行将窗体数据保存到某个文件的代码。
2.3.5. OnAddInsUpdate 事件
当一组已加载的COM 加载项发生更改时,就会发生OnAddInsUpdate 事件。
当某个加载项加载或卸载时,就会在任何其它已加载的加载项中发生 OnAddInsUpdate 事件。
例如,如果加载项A 和 B 当前已加载,然后将加载加载项 C,则 OnAddInsUpdate 事件就会在加载项 A 和 B 中发生。
如果 C 已卸载,则加载项 A 和 B 中再次发生 OnAddInsUpdate 事件。
根据这五个事件的触发时机可以组合使用来实现很多有用的功能,大大减小WPS二次开发的难度。
3. COM加载项的发布
为了在WPS启动的时候能够加载实现的COM加载项,需要注册组件和增加一个注册表键值。
3.0.1. 修改注册表
假设在VB中的工程名是KSAddins,类名是addintest。
新建一个.reg文件,用文本编辑器打开写入下列语句:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER/Software/Kingsoft/Office/WPS/Addi
ns/KSAddins.addintest]
"FriendlyName"="WPS Addin test"
"Description"="addintest"
"LoadBehavior"=dword:00000003
"CommandLineSafe"=dword:00000001
其中:FriendlyName是鼠标放在按钮上的提示信息,Description是按钮的显示名称,LoadBehavior加载行为(3表示启动时加载)。
用户将文件保存后,双击导入注册表。
3.0.2. 注册组件
在“开始|运行”中输入regsvr32 [组件路径],假设用户的DLL 组件放在d:/ InFileFormated.dll,注册组件的命令应写为: regsvr32 d:/ InFileFormated.dll 点击确定后,提示注册成功。
3.0.3. 批处理发布
还可以使用批处理文件来简化操作。
新建一个文本文件写入:
regedit /s regaddin.reg
regsvr32 InFileFormated.dll
然后保存成批处理文件格式(.bat),双击运行即可。
---------------------
作者:lion_wing 来源:CSDN。