張未未,吳宇峰,劉仁權,王 蘋(.北京中醫藥大學 信息中心,北京 0009;.北京中醫藥大學 教務處,北京 0009)
基于VSTO技術的Office計時器插件的設計與實現
張未未1,吳宇峰2,劉仁權1,王 蘋1
(1.北京中醫藥大學 信息中心,北京100029;2.北京中醫藥大學 教務處,北京100029)
計時器被廣泛應用于演講比賽和答辯陳述等需要限時完成的多種場合。針對實際應用中計時器只能起到計時作用,而無法真正干預到演講者演講超時行為的問題,文章介紹了基于VSTO技術的Office計時器插件的設計與實現方法。該計時器插件在演講者無意或因其他操作需退出幻燈片放映狀態時,仍可繼續計時,從而保證整個演講過程計時的連續性。同時,還可以通過計時結束時強制退出幻燈片放映狀態或關閉演示文稿等手段對超時情況進行干預,從技術層面保證行為與時效的一致統一,經實踐證明該插件使用效果良好。
VSTO;計時器;插件;PowerPoint;Visual Studio
計時器被廣泛應用于演講比賽和答辯陳述等需要限時完成的多種場合。但實際應用中經常會出現計時結束但演講者還在滔滔不絕繼續陳述,以致現場評委不得不再三提醒的場景。這種情況既違反了演講或答辯的規則,又會影響到后續環節的準時進行,往往造成活動時間處于不可控的局面。而計時器也并沒有真正起到時間限制的作用。從目前市場上已有的計時器產品來看,無論是專用計時器設備,還是計時器應用軟件,都只能起到時間計量和到時提示的功能,而不能以某種措施真正干預到演講者演講超時的行為,從而導致一方面組織者要為購買計時器設備或軟件花費經費,但另一方面又要為怎么控制時間而另想辦法的尷尬局面。基于此,文中根據用戶需求,并結合目前多數演講比賽和答辯陳述環節都要求使用幻燈片作為演示工具的特點,介紹了一種全新的Office計時器插件的設計與實現方法,很好的解決了已有計時器只計時而不能真正實現時間控制的功能局限,而且通過實際使用證明效果良好。
1.1功能描述
根據對用戶的使用需求分析,文中所介紹的計時器工具是以Office插件形式實現的,嵌入于PowerPoint軟件之中,并具有如下功能:
1)幻燈片開始放映,倒計時開始,顯示計時時間;
2)倒計時結束前某一時刻進行提示,以提醒演講者注意控制時間;
3)倒計時結束伴有語音提示;
4)可設置倒計時結束時退出幻燈片放映狀態或者關閉當前演示文稿;
5)可設置演講者在演講過程中退出幻燈片放映狀態而進行其他計算機操作時,時間倒計時繼續;
6)不需要倒計時操作時,可關閉該Office插件功能。
1.2工作流程
根據以上功能描述,計時器插件工作流程如圖1所示。

圖1 計時器插件工作流程
1)當幻燈片開始放映時,表示演講正式開始,計時器啟動,倒計時開始;
2)當時間到達設定好的提示時間時,將發出提示音,提醒演講者注意距離結束所剩余的時間;
3)當倒計時時間到時,將發出提示音,提示演講者倒計時結束;
4)倒計時結束后可根據軟件設置決定是否允許演講者繼續放映演示文稿余下內容、還是退出放映狀態以及關閉當前演示文稿等操作。
VSTO(Visual Studio Tools for the Microsoft Office System)是一種高效可靠的實現智能文檔的技術,是微軟提出的內嵌于Microsoft Visual Studio.NET產品的解決方案,可以說是VBA技術的.NET平臺化[1]。開發者可以使用強大的Visual Studio開發環境來創建定制程序,相對于使用VBA或Office里的Visual Basic Editor(VBE),VSTO技術具有以下明顯優勢[2]:
1)開發人員不但可以使用各種控件,包括WinForm托管控件和VSTO宿主控件,而且可以利用Visual Studio為這些控件提供的豐富功能來提高工作效率。
2)支持各種托管代碼,如VB.NET、Visual C#等,這樣開發人員就可以充分利用VB或C#的經驗進行開發,從而易于上手掌握。
3)NET Framework類庫和公共語言運行庫(CLR)對VSTO提供了全面地支持,例如可以使用 ADO.NET訪問數據庫、支持 XML Web Services多層結構解決方案的開發等。
4)集成了.NET Framework提供的安全功能,另外,在VSTO環境中編程時,其代碼是包含在該項目所生成的程序集中的,且編寫的是托管代碼,與托管代碼一起提供的公共語言運行庫會對代碼進行驗證,從而避免執行非法操作[3]。
3.1PowerPoint外接程序的創建
VSTO在Visual Studio.NET的開發環境中提供了一套Office Projects項目模板,使用這些模板可以創建以Office文檔(例如Word、Excel、PowerPoint、InfoPath、Visio和Outlook)為中心的解決方案[4]。用戶可根據需要,利用VSTO創建文檔級別或應用程序級別的定制程序。文檔級別的定制程序是指程序代碼僅關聯到特定的文檔而不是整個應用程序,應用程序級的定制程序則對整個應用程序都是可用的[5]。本文所介紹的計時器插件是對于PowerPoint整個軟件可用的,因此需創建應用程序級別的定制程序。
在Visual Studio 2010中可以依次點擊“文件”→“新建項目”展開Office模板,然后從模板中選擇“PowerPoint 2010外接程序”來完成針對PowerPoint 2010的應用程序級別插件的項目創建。項目建立后,Visual Studio會為用戶自動引入必要的程序集,并創建ThisAddIn.vb(本文選取VB.net作為開發語言)文件,該文件將會創建一個外接程序的入口類ThisAddIn,即PowerPoint宿主項。可以通過此類對PowerPoint對象進行訪問。同時,該類中有 ThisAddIn_Startup和 ThisAddIn_ Shutdown兩個方法,用于放置外接程序加載或卸載時要執行的代碼[6]。
3.2用戶界面設計
計時器插件的用戶界面包括功能區(Ribbon)倒計時器選項卡界面和計時器窗口兩個。
3.2.1計時器選項卡設計
Visual Studio 2010為用戶提供了功能區選項卡的可視化設計器,用戶可以通過從工具箱中拖拽控件來實現功能區的設計,并且可以通過在可視化設計器的控件上雙擊鼠標來為控件添加事件響應程序[7]。計時器插件的選項卡控制界面設計如圖2所示。

圖2 計時器插件的選項卡控制界面
1)時間設置:表示倒計時的時長。
2)距計時結束提示音:勾選此項后,將可以設置倒計時結束前的提示時間,并伴有提示音。如不勾選此項,則提示時間功能關閉。
3)退出放映繼續計時:勾選此項后,則當演講者在演講過程中無意或因其他操作需退出幻燈片放映狀態時,計時仍將繼續,以保證整個演講過程計時的連續性。勾選此項后,“到時關閉PPT”選項也會被自動選中,表示此情況發生時,如計時結束將會關閉當前演示文稿,以提示用戶時間已到,演講停止。
4)到時設置:“到時退出放映”表示計時結束時將自動退出幻燈片放映狀態,以提示用戶時間已到,演講停止;“到時關閉PPT”表示計時結束時將自動關閉當前演示文稿,以提示用戶時間已到,演講停止。此兩選項可依據情況分別勾選或同時勾選。
5)計時器插件開關按鈕:此按鈕可以控制計時器插件是否在幻燈片放映時開始工作。
3.2.2計時器窗口設計
計時器窗口界面如圖3所示。該窗口為普通Windows窗體,作為倒計時過程時間的顯示界面,并且可以暫停計時。當幻燈片放映開始時,該窗口會自動彈出,并依據所設定時間開始倒計時。

圖3 計時器窗口界面
3.3主要模塊功能及實現代碼
該計時器插件涉及代碼模塊主要包括:Ribbon1.vb、Form1.vb和ThisAddIn.vb。
3.3.1Ribbon1.vb模塊功能
Ribbon1.vb模塊用以實現圖2所示倒計時器選項卡界面功能,包括各控件初始狀態的設置、時間輸入值的有效性檢驗及獲取、控件事件響應操作等,代碼略。
3.3.2Form1.vb模塊功能及主要實現代碼
Form1.vb模塊用以實現圖3所示計時器窗口的時間顯示和“繼續/暫停”功能。窗體加載時的初始化設置代碼如下:
Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load
……
Me.minute_s.Text=Time_m10'設置窗體顯示的倒計時時間—分十位
Me.minute_g.Text=Time_m Mod 10'設置窗體顯示的倒計時時間—分個位
Me.second_s.Text=Time_s10'設置窗體顯示的倒計時時間—秒十位
Me.second_g.Text=Time_s Mod 10'設置窗體顯示的倒計時時間—秒個位
Time_total=Time_m*60+Time_s'將設置的倒計時時間換算成以秒為單位的數值
TimeTx_total=TimeTx_m*60+TimeTx_s'將設置的提醒時間換算成以秒為單位的數值
Time_yz=0'已走過時間清零
Timer1.Interval=1000'設置計時器控件觸發時間間隔為1000毫秒
Timer1.Enabled=True'計時器控件開始工作
End Sub
Form1.vb模塊中添加了計時器控件,通過初始化設置使該控件每隔1 s自動觸發執行一次Tick事件,以此來進行時間顯示數值的變化,模擬時間倒計時走動過程。Tick事件主要代碼如下:

Time_sy=Time_total-Time_yz'計算剩余時間
'下列代碼設置窗體中顯示出的剩余時間

'下列代碼實現當剩余時間達到提示時間,并且已經勾選“距計時結束提示音”復選框,則播放提示音
If Time_sy=TimeTx_total And Globals.Ribbons.Ribbo-n1. CheckBox4.Checked=True Then
……'播放提示音

'下列代碼實現當倒計時還剩4秒時,窗體中時間文本框中的數字開始顏色閃爍

……'數字顏色變為黃色

……'數字顏色變為紅色

Timer1.Enabled=False'倒計時結束關閉計時器控件
If Globals.Ribbons.Ribbon1.CheckBox2.Checked=True Then'判斷是否勾選“到時關閉PPT”復選框Close()'關閉當前演示文稿

ElseIf Globals.Ribbons.Ribbon1.CheckBox1.Checked= True Then'判斷是否勾選“到時退出放映狀態”復選框
Globals.ThisAddIn.Application.Active Presentation. SlideShowWindow.View.Exit()'退出幻燈片放映狀態
End If
MsgBox("時間到",MsgBoxStyle.Information,"時間提示")'彈出“時間到”提示對話框
End If End Sub
3.3.3ThisAddIn.vb模塊功能及主要實現代碼
ThisAddIn.vb模塊用以實現幻燈片開始放映和退出放映等事件觸發時要執行的操作。主要實現代碼如下:
'下列代碼實現當幻燈片開始放映時,啟動計時器窗口開始倒計時


'以下代碼實現退出放映狀態時,如果時間已到或“退出放映繼續計時”復選框沒有勾選時,關閉倒計時窗口;否則繼續倒計時。

3.4計時器插件的發布與安裝
基于VSTO技術創建的PowerPoint 2010外接程序可以使用Visual studio 2010自帶的發布程序進行打包發布[8]。安裝時,雙擊發布后的安裝包,按提示進行安裝即可。安裝成功后啟動PowerPoint 2010軟件,計時器插件會自動完成加載,如圖4所示。

圖4 插件安裝后PowerPoint 2010的啟動界面
計時器插件安裝成功后,單擊“開/關”按鈕,打開計時器,并設置好倒計時時間。當幻燈片開始放映時,計時窗口會自動彈出,并開始倒計時,如圖5所示。
如果勾選了“退出放映繼續計時”復選框,則當退出幻燈片放映狀態時,倒計時仍然繼續。如圖6所示。

圖5 幻燈片放映狀態下工作的計時器

圖6 退出幻燈片放映狀態繼續工作的計時器
當倒計時結束時,演示文稿將被關閉,并彈出“時間到”提示對話框,如圖7所示。

圖7 "時間到"提示對話框
通過真實演講比賽和答辯陳述現場測試,該計時器插件計時準確可靠,并能以強制退出幻燈片放映狀態或關閉演示文稿等技術手段對超時情況進行干預,使用效果良好。
文中介紹了基于VSTO技術的Office計時器插件的設計與實現方法。該插件可以在演講者放映幻燈片時開始啟動計時,而且在演講者無意或因其他操作需退出幻燈片放映狀態時,仍可繼續計時,從而保證整個演講過程計時的連續性。同時,還可以通過計時結束時強制退出幻燈片放映狀態或關閉演示文稿等手段對超時情況進行干預,從技術層面保證行為與時效的一致統一,經實踐證明該插件使用效果良好。
[1]王海波,王兆華.Excel查找擴展組件SearchPro4Excel的開發和應用[J].計算機與現代化,2013(1):137-140.
[2]張印.基于VSTO的高校畢業論文格式化處理軟件的設計與實現[D].北京:北京郵電大學,2012.
[3]朱正杰,鄭暉,羅洋洋.基于VSTO的開發區土地集約利用評價工具設計與開發[J].安徽農業科學,2015(13):313-316.
[4]甄艷玲,孫智勇.基于繼續教育的計算機考試系統的設計與實現[J].計算機與現代化,2012(11):119-122.
[5]韓立杰.基于VSTO的Office評分系統研究 [D].石家莊:河北科技大學,2010.
[6]魯琴,羅武勝,趙夢偉.基于VSTO技術和安卓手機的高校互動反饋教學系統設計[J].中國教育技術裝備,2014(12): 26-28.
[7]顧晟.基于VSTO的智能文檔在企業環保信息調查系統中的應用[J].計算機系統應用,2010,19(1):114-118.
[8]史兆彥,戴長華,周巖.基于VSTO技術的船岸同步軟件的設計與實現[J].上海船舶運輸科學研究所學報,2014,37 (3):37-43.
The design and implementation of Office timer plug-in based on VSTO technology
ZHANG Wei-wei1,WU Yu-feng2,LIU Ren-quan1,WANG Ping1
(1.Information Center,Beijing University of Chinese Medicine,Beijing 100029,China;2.Academic Affairs Office,Beijing University of Chinese Medicine,Beijing 100029,China)
The timer is widely used in the speech contest,defense statement and other occasions that needing for a limited time to complete.In view of the actual application that the timer can only play a role of timing,and cannot really interfere with the speaker’s speech timeout behaviors,this paper introduces the design and implementation methods of Office timer plug-in based on VSTO technology.This timer plug-in,when the speaker accidentally or because of other operations needs to exit the slide show state,can still continue to time,so as to ensure the continuity of the whole speech process.At the same time,it can also be used to intervene in the timeout by forced exiting slide show state and closing the presentation,from the technical level to ensure the consistency of the behavior and time,the time plug-in has been proved to be effective by practice.
VSTO;timer;plug-in;PowerPoint;Visual Studio
TN919
A
1674-6236(2016)11-0031-04
2015-10-14稿件編號:201510085
北京市青年英才計劃項目(YETP0820)
張未未(1979—),男,山東萊蕪人,碩士,講師。研究方向:數據庫應用技術、辦公自動化。