天天看点

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

OneKey_Lite是一款由 @只为设计 独立开发的WPS演示免费插件。在开发过程中,感恩于网上那些无私分享代码的陌生人,给我这个开发小白提供了重要的借鉴参考。于是我决定把用C#和Visual Studio开发WPS插件的每一个具体步骤分享出来,让免费分享精神继续传递下去,希望对需要的朋友提供一些帮助。

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

(一)开发前准备

1. 操作系统

在Win10系统中引用WPS的dll文件可能会受到系统权限限制的问题,可以尝试在Administrator账户中安装WPS Office 2016专业版及进行后续开发。如果使用Win7系统,比较顺利

2. IDE集成开发环境

Microsoft Visual Studio 2017 Community 社区免费版

3. WPS Office 2016

  • WPS Office 2016专业版。专业版无需激活也可进行开发,推荐
  • WPS Office 2016个人版。个人版需运行专业版自带的WPSOfficePIA.exe注册程序集后方可正常引用WPS的相关DLL

(二)创建项目

1. 启动Visual Studio-文件-新建-项目

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

2. 已安装→Visual C#-类库(.NET Framework)→输入名称→选择框架→确定

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

生成的新项目如下图

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

3. 在解决方案资源管理器中的项目上右键→属性→应用程序→程序集信息

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

4. 修改相应信息→勾选“使程序集COM可见”→ 确定

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

5. 切换到“生成”→勾选“为COM互操作注册”

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

6. 切换到“调试”→勾选“启动外部程序”→浏览→找到WPS安装文件夹中的相应exe程序

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

7. 切换到“签名”→勾选“为程序集签名”→新建密钥文件→输入名称→输入密码(也可不输入)→确定后完成项目属性设置

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

(三)添加引用

1. 在项目的“引用”上右键→添加引用

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

2. 选中“COM”→勾选“Kingsoft Add-In Designer”

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

3. 继续勾选“Upgrade WPS Presentation 3.0 Object Library(Beta)”→确定

提示: Upgrade WPS Office 3.0 Object Library对应的是WPS文字、Upgrade WPS Spreadsheets 3.0 Object Library对应的是WPS表格

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

4. 添加上述两个引用后会自动添加以下引用

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

提示:若添加后提示引用出错,可以尝试的解决方法有:

  • 以Administrator账户登录Windows
  • 以管理员身份运行Visual Studio
  • 在Administrator账户中,以管理员身份安装WPS Office
  • WPS Office个人版需要运行专业版中的 WPSOfficePIA.exe 以注册所引用的程序集
  • 安装WPS Office专业版,安装时WPS会自动注册相关程序集

(四)添加资源文件

1. 在Properties上右键→添加→新建项→找到“资源文件”→输入或保持默认名称→添加

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

2. 在打开的Resource1.resx里→添加资源→添加新文本文件→输入名称→添加

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

3. 创建文本文件后→在打开的txt里粘贴以下代码

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="MyTab" label="我的插件" visible="true" insertAfterMso="TabDeveloper">
				
				<group id="Test" label= "组名称"> 
					<button id="Test" label="Hello" onAction="Test" getImage="GetRibbonImage" size="large"/>
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>
           

说明:

  • tabs表示选项卡,id是“MyTab”,显示的名称是“我的插件”,在“开发工具”选项卡之后插入本选项卡
  • group表示选项卡中的组,id是“Test”,名称是“组名称”
  • button表示命令按钮,id是“Test”,名称是“Hello”,回调“Test”事件,从“GetRibbonImage”事件中获取按钮图标,按钮显示大尺寸
  • Id、Label、onAction、getImage引号中的字符可以自定义,且保证唯一性

4. 在Resource1.resx中→添加资源→添加现有文件→选择图标文件

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

添加后的图标会显示在Resource1.resx中

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

5. 在Resource1.resx中添加相关资源后,在解决方案资源管理器中会自动生成Resources文件夹以及添加好的资源

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

提示:直接在项目所在的Resources文件夹中添加资源是不行的,资源文件并没有与项目产生关联,应该在VS中的Resource1.resx中添加

(五)修改主类

1. 点击解决方案资源管理器中默认的Class1.cs→输入自己插件的名称→回车后点”是”

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

提示:本文以“MyAddin”这个名称为例

2. 在Using别名区添加相关的引用名称

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
using AddInDesignerObjects;

using Office;

using PowerPoint;
           

3. 在public class MyAddin后面添加调用接口

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
public class MyAddin : IDTExtensibility2, IRibbonExtensibility
           

4. 鼠标分别置于 IDTExtensibility2和IRibbonExtensibility上→点击黄色小灯泡→实现接口→VS会自动添加相关事件

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

5. 声明公共静态全局变量app和wpp

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
public static PowerPoint.Application app = null;
public static object wpp;
           

6. 在OnConnection事件中初始化wpp和app

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
wpp = Application;
app = wpp as PowerPoint.Application;
           

7. 在GetCustomUI事件中调用在Resource1.resx中添加的MyRibbon.txt

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
return Properties.Resource1.MyRibbon;
           

提示:调用资源文件时无需添加具体的扩展名

8. 添加GetRibbonImage事件,用于插件获取按钮图标

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
public Bitmap GetRibbonImage(IRibbonControl ctrl)
        {
            switch (ctrl.Id)
            {
                case "Test":
                    return Properties.Resource1.OKUI_1;
            }
            return null;
        }
           

提示:若要给别的按钮添加图标,在GetRibbonImage事件中补充相关代码。这里的Test是Hello按钮的id,OKUI_1是Resource1.resx中图标的名称

9. 鼠标置于Bitmap上→点击黄色小灯泡→点“Using System.Drawing;”,VS会在顶部的Using别名区自动添加相应的Using别名

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

10. 添加Test事件

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
public void Test(IRibbonControl ctrl)
        {
            MessageBox.Show("Hello World");
        }
           

提示:MessageBox需要引用System.Windows.Forms。引用方法如下:

(1)在解决方案资源管理器中→在引用上右键→添加引用

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

(2)选中程序集→勾选“System.Windows.Forms”→确定

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

(3)在Using别名区引用System.Windows.Forms

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
using System.Windows.Forms;
           

(4)波浪线消失,我们可以正常调用消息框了

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

最后:其它几个事件可为空,也可根据自己需求添加代码。

(六)添加注册表信息

1. 安装

打开记事本→粘贴以下代码→另存为install.reg→双击install.reg文件安装插件

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSOFTWAREMicrosoftOfficePowerPointAddinsWPP_test.MyAddin]
"FriendlyName"="友好名称"
"Description"="插件描述"
"LoadBehavior"=dword:00000003
"CommandLineSafe"=dword:00000001
[HKEY_CURRENT_USERSoftwareKingsoftOfficeWPPAddinsWL]
"WPP_test.MyAddin"=""
           

2. 卸载

打开记事本→粘贴以下代码→另存为uninstall.reg→双击uninstall文件卸载插件

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USERSOFTWAREMicrosoftOfficePowerPointAddinsWPP_test.MyAddin]
[HKEY_CURRENT_USERSoftwareKingsoftOfficeWPPAddinsWL]
"WPP_test.MyAddin"=-
           

说明:

(1)因为开发的是WPS演示的插件,所以注册表路径分别对应的是PowerPoint和WPP

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

需要注意的是,无论电脑中有没有安装Microsoft Office,都应这样写

(2)这里的WPP_test是插件项目的名称,MyAddin是插件主类库的名称

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

(3)若开发的是WPS文字、WPS表格的外接程序,则注册路径中:WPS文字对应的是Word和WPS;WPS表格对应的是Excel和ET

(七)运行

1. 点击VS中的启动按钮启动wpp.exe

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

2. 切换到“我的插件”选项卡→点击Hello按钮→弹出对话框→插件的基本创建就完成了

WPS插件开发流程(1)(一)开发前准备(二)创建项目(三)添加引用(四)添加资源文件(五)修改主类(六)添加注册表信息(七)运行待续

待续

时间所限,目前先到这里。至于如何让普通用户也安装使用插件,以及项目源码我会在文章全部更新完成后分享.