上一篇,我們談了插件開發原理,現在該是應用原理的時候了。工欲善其事必先利其器,首先安裝wps 2016專業版,然后再開發。
第一步:打開vs2010,新建一個類庫項目,項目結構如下:
說明:其中Resource1.resx是資源文件,它包括了兩張png圖片一個定義ribbon的txt文件。
第二步:項目生成設置
勾選com互操作注冊。
第三步:設置程序集文件
打開AssemblyInfo.cs設置ComVisible為true,如圖所示:
第四步:為程序集簽名
第五步:准備工作做好了,現在可以安心寫代碼了。
添加com引用:
kingsoft Add-In Design中定義了com組件要實現的接口。
Upgrade Kingsoft Wps 3.0 公布了wps word api。
我們再看看WPSWord2016.cs中的核心代碼:
1 public void OnConnection(object Application, ext_ConnectMode ConnectMode, object AddInInst, ref Array custom) 2 { 3 app = Application; 4 Console.WriteLine("插件已連接"); 5 } 6 public void OnStartupComplete(ref Array custom) 7 { 8 Process[] processes = Process.GetProcesses(); 9 foreach (Process process in processes) 10 { 11 if (process.ProcessName.ToLower() == "wps") 12 { 13 Console.WriteLine(process.ProcessName + "進程已啟動"); 14 15 wpsapp = app as Word.Application; 16 wpsapp.DocumentBeforeClose += new ApplicationEvents4_DocumentBeforeCloseEventHandler(wpsapp_DocumentBeforeClose); 17 18 break; 19 } 20 } 21 } 22 void wpsapp_DocumentBeforeClose(Document Doc, ref bool Cancel) 23 { 24 Console.WriteLine(Doc.FullName + "wps文檔將要關閉"); 25 }
OnConnection的參數 Application代表了我們的應用程序,如果我們開發的是word,則代表Word.Application。
OnStartupComplete中,可以實現Application的文檔相關事件,比如 DocumentBeforeClose。
第六步:生成解決方案。
com組件必須注冊到注冊表中,才能夠使用。由於第二步的項目設置,所以這一步微軟幫我們做了,接下來把插件信息寫入到注冊表中:
1 Windows Registry Editor Version 5.00 2 [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Word\Addins\WpsWordAddin.WPSWord2016] 3 "FriendlyName"="WpsWordAddin" 4 "Description"="wps word示例" 5 "LoadBehavior"=dword:00000003 6 "CommandLineSafe"=dword:00000001 7 [HKEY_CURRENT_USER\Software\Kingsoft\Office\WPS\AddinsWL] 8 "WpsWordAddin.WPSWord2016"=""
第七步:打開wps word查看插件是否能夠正確地加載。
到這一步還不太清楚的話,可以下載源碼。