OneKey_Lite是一款由 @只為設(shè)計(jì) 獨(dú)立開(kāi)發(fā)的WPS演示免費(fèi)插件。在開(kāi)發(fā)過(guò)程中,感恩于網(wǎng)上那些無(wú)私分享代碼的陌生人,給我這個(gè)開(kāi)發(fā)小白提供了重要的借鑒參考。于是我決定把用C#和Visual Studio開(kāi)發(fā)WPS插件的每一個(gè)具體步驟分享出來(lái),讓免費(fèi)分享精神繼續(xù)傳遞下去,希望對(duì)需要的朋友提供一些幫助。
(一)開(kāi)發(fā)前準(zhǔn)備
1. 操作系統(tǒng)
在Win10系統(tǒng)中引用WPS的dll文件可能會(huì)受到系統(tǒng)權(quán)限限制的問(wèn)題,可以嘗試在Administrator賬戶中安裝WPS Office 2016專業(yè)版及進(jìn)行后續(xù)開(kāi)發(fā)。如果使用Win7系統(tǒng),比較順利
2. IDE集成開(kāi)發(fā)環(huán)境
Microsoft Visual Studio 2017 Community 社區(qū)免費(fèi)版
3. WPS Office 2016
WPS Office 2016專業(yè)版。專業(yè)版無(wú)需激活也可進(jìn)行開(kāi)發(fā),推薦
WPS Office 2016個(gè)人版。個(gè)人版需運(yùn)行專業(yè)版自帶的WPSOfficePIA.exe注冊(cè)程序集后方可正常引用WPS的相關(guān)DLL
(二)創(chuàng)建項(xiàng)目
1. 啟動(dòng)Visual Studio-文件-新建-項(xiàng)目
2. 已安裝→Visual C#-類庫(kù)(.NET Framework)→輸入名稱→選擇框架→確定
生成的新項(xiàng)目如下圖
3. 在解決方案資源管理器中的項(xiàng)目上右鍵→屬性→應(yīng)用程序→程序集信息
4. 修改相應(yīng)信息→勾選“使程序集COM可見(jiàn)”→ 確定
5. 切換到“生成”→勾選“為COM互操作注冊(cè)”
6. 切換到“調(diào)試”→勾選“啟動(dòng)外部程序”→瀏覽→找到WPS安裝文件夾中的相應(yīng)exe程序
7. 切換到“簽名”→勾選“為程序集簽名”→新建密鑰文件→輸入名稱→輸入密碼(也可不輸入)→確定后完成項(xiàng)目屬性設(shè)置
(三)添加引用
1. 在項(xiàng)目的“引用”上右鍵→添加引用
2. 選中“COM”→勾選“Kingsoft Add-In Designer”
3. 繼續(xù)勾選“Upgrade WPS Presentation 3.0 Object Library(Beta)”→確定
提示: Upgrade WPS Office 3.0 Object Library對(duì)應(yīng)的是WPS文字、Upgrade WPS Spreadsheets 3.0 Object Library對(duì)應(yīng)的是WPS表格
4. 添加上述兩個(gè)引用后會(huì)自動(dòng)添加以下引用
提示:若添加后提示引用出錯(cuò),可以嘗試的解決方法有:
以Administrator賬戶登錄Windows
以管理員身份運(yùn)行Visual Studio
在Administrator賬戶中,以管理員身份安裝WPS Office
WPS Office個(gè)人版需要運(yùn)行專業(yè)版中的 WPSOfficePIA.exe 以注冊(cè)所引用的程序集
安裝WPS Office專業(yè)版,安裝時(shí)WPS會(huì)自動(dòng)注冊(cè)相關(guān)程序集
(四)添加資源文件
1. 在Properties上右鍵→添加→新建項(xiàng)→找到“資源文件”→輸入或保持默認(rèn)名稱→添加
2. 在打開(kāi)的Resource1.resx里→添加資源→添加新文本文件→輸入名稱→添加
3. 創(chuàng)建文本文件后→在打開(kāi)的txt里粘貼以下代碼
<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>
說(shuō)明:
tabs表示選項(xiàng)卡,id是“MyTab”,顯示的名稱是“我的插件”,在“開(kāi)發(fā)工具”選項(xiàng)卡之后插入本選項(xiàng)卡
group表示選項(xiàng)卡中的組,id是“Test”,名稱是“組名稱”
button表示命令按鈕,id是“Test”,名稱是“Hello”,回調(diào)“Test”事件,從“GetRibbonImage”事件中獲取按鈕圖標(biāo),按鈕顯示大尺寸
Id、Label、onAction、getImage引號(hào)中的字符可以自定義,且保證唯一性
4. 在Resource1.resx中→添加資源→添加現(xiàn)有文件→選擇圖標(biāo)文件
添加后的圖標(biāo)會(huì)顯示在Resource1.resx中
5. 在Resource1.resx中添加相關(guān)資源后,在解決方案資源管理器中會(huì)自動(dòng)生成Resources文件夾以及添加好的資源
提示:直接在項(xiàng)目所在的Resources文件夾中添加資源是不行的,資源文件并沒(méi)有與項(xiàng)目產(chǎn)生關(guān)聯(lián),應(yīng)該在VS中的Resource1.resx中添加
(五)修改主類
1. 點(diǎn)擊解決方案資源管理器中默認(rèn)的Class1.cs→輸入自己插件的名稱→回車后點(diǎn)”是”
提示:本文以“MyAddin”這個(gè)名稱為例
2. 在Using別名區(qū)添加相關(guān)的引用名稱
using AddInDesignerObjects;
using Office;
using PowerPoint;
3. 在public class MyAddin后面添加調(diào)用接口
public class MyAddin : IDTExtensibility2, IRibbonExtensibility
4. 鼠標(biāo)分別置于 IDTExtensibility2和IRibbonExtensibility上→點(diǎn)擊黃色小燈泡→實(shí)現(xiàn)接口→VS會(huì)自動(dòng)添加相關(guān)事件
5. 聲明公共靜態(tài)全局變量app和wpp
public static PowerPoint.Application app = null;
public static object wpp;
6. 在OnConnection事件中初始化wpp和app
wpp = Application;
app = wpp as PowerPoint.Application;
7. 在GetCustomUI事件中調(diào)用在Resource1.resx中添加的MyRibbon.txt
return Properties.Resource1.MyRibbon;
提示:調(diào)用資源文件時(shí)無(wú)需添加具體的擴(kuò)展名
8. 添加GetRibbonImage事件,用于插件獲取按鈕圖標(biāo)
public Bitmap GetRibbonImage(IRibbonControl ctrl)
{
switch (ctrl.Id)
{
case "Test":
return Properties.Resource1.OKUI_1;
}
return null;
}
提示:若要給別的按鈕添加圖標(biāo),在GetRibbonImage事件中補(bǔ)充相關(guān)代碼。這里的Test是Hello按鈕的id,OKUI_1是Resource1.resx中圖標(biāo)的名稱
9. 鼠標(biāo)置于Bitmap上→點(diǎn)擊黃色小燈泡→點(diǎn)“Using System.Drawing;”,VS會(huì)在頂部的Using別名區(qū)自動(dòng)添加相應(yīng)的Using別名
10. 添加Test事件
public void Test(IRibbonControl ctrl)
{
MessageBox.Show("Hello World");
}
提示:MessageBox需要引用System.Windows.Forms。引用方法如下:
(1)在解決方案資源管理器中→在引用上右鍵→添加引用
(2)選中程序集→勾選“System.Windows.Forms”→確定
(3)在Using別名區(qū)引用System.Windows.Forms
using System.Windows.Forms;
(4)波浪線消失,我們可以正常調(diào)用消息框了
最后:其它幾個(gè)事件可為空,也可根據(jù)自己需求添加代碼。
(六)添加注冊(cè)表信息
1. 安裝
打開(kāi)記事本→粘貼以下代碼→另存為install.reg→雙擊install.reg文件安裝插件
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. 卸載
打開(kāi)記事本→粘貼以下代碼→另存為uninstall.reg→雙擊uninstall文件卸載插件
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USERSOFTWAREMicrosoftOfficePowerPointAddinsWPP_test.MyAddin]
[HKEY_CURRENT_USERSoftwareKingsoftOfficeWPPAddinsWL]
"WPP_test.MyAddin"=-
說(shuō)明:
(1)因?yàn)殚_(kāi)發(fā)的是WPS演示的插件,所以注冊(cè)表路徑分別對(duì)應(yīng)的是PowerPoint和WPP
需要注意的是,無(wú)論電腦中有沒(méi)有安裝Microsoft Office,都應(yīng)這樣寫(xiě)
(2)這里的WPP_test是插件項(xiàng)目的名稱,MyAddin是插件主類庫(kù)的名稱
(3)若開(kāi)發(fā)的是WPS文字、WPS表格的外接程序,則注冊(cè)路徑中:WPS文字對(duì)應(yīng)的是Word和WPS;WPS表格對(duì)應(yīng)的是Excel和ET
(七)運(yùn)行
1. 點(diǎn)擊VS中的啟動(dòng)按鈕啟動(dòng)wpp.exe
2. 切換到“我的插件”選項(xiàng)卡→點(diǎn)擊Hello按鈕→彈出對(duì)話框→插件的基本創(chuàng)建就完成了
待續(xù)
時(shí)間所限,目前先到這里。至于如何讓普通用戶也安裝使用插件,以及項(xiàng)目源碼我會(huì)在文章全