本專題概要
- 引言
- 實現思路
- 遙控幻燈片程序的實現
- 小結
一、引言
記得老師講課的時候,經常會用PPT遙控翻頁筆來遙控幻燈片來給我們講課,當時覺得非常有趣,由於這段時間接觸了VSTO相關的開發,了解到了Office的相關產品都公開了一些API來讓我們對Office產品進行二次開發,這時候我就想,能不能用PowerPoint公開的對象來制作一個遙控幻燈片的程序呢?在本專題就向大家介紹下這個小工具的實現思路和效果。
二、實現思路
- 既然要實現的程序是遙控幻燈片,這樣我們就需要先獲得幻燈片應用程序的,在PowerPoint對象模型中,Microsoft.Office.Interop.PowerPoint.Application代表Powerpoint應用程序,這點和Word、Excel和Outlook都是一樣的。
- 獲得了幻燈片應用程序對象之后,之后我們就需要獲得幻燈片對象,因為我們遙控的是幻燈片,在PowerPoint對象模型中也提供了幻燈片對象,即Microsoft.Office.Interop.PowerPoint.Slide。由於幻燈片又是存在於演示文稿中的,所以我們要想獲得幻燈片對象,就需要先獲得演示文稿對象,Microsoft.Office.Interop.PowerPoint.Presentation 就是代表演示文稿對象。
- 獲得幻燈片對象之后,我們就可以利用幻燈片對象的Select方法來進行幻燈片的切換,然而在閱讀模式的情況下,不能用Select方法來進行翻頁,此時需要另一種方式來實現,即調用 Microsoft.Office.Interop.PowerPoint.SlideShowView對象的First,Next,Last,Previous方法來進行幻燈片翻頁。
上面列出來的就是該工具的實現思路,其實思路非常的簡單,為了幫助大家更形象地理解PowerPoint的對象模型,下面就用一張圖來介紹PowerPoint中對象與真真的幻燈片的一個對象關系(從下面的圖中也可以體會到面向對象編程,就是把看到的東西抽象出一個個對象):
下面一張是閱讀模式下程序中實現翻頁功能與在幻燈片中的對應關系:
三、遙控幻燈片程序的實現
有了上面的解釋,我們再看下面的實現代碼時,相信大家肯定不會覺得有任何難道了,下面就直接貼出部分的實現的代碼(這樣可以讓大家參看代碼自己去實現剩余的部分,當然在文章的最后也會提供全部源碼的下載):
/// <summary> /// 檢查是否打開幻燈片程序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCheck_Click(object sender, EventArgs e) { // 必須先運行幻燈片,下面才能獲得PowerPoint應用程序,否則會出現異常 // 獲得正在運行的PowerPoint應用程序 try { pptApplication = Marshal.GetActiveObject("PowerPoint.Application") as PPt.Application; // 成功獲取了PowerPoint程序時,使UI按鈕可用 this.btnFirst.Enabled = true; this.btnNext.Enabled = true; this.btnPrev.Enabled = true; this.btnLast.Enabled = true; } catch { MessageBox.Show("請先啟動遙控的幻燈片", "Error", MessageBoxButtons.OKCancel, MessageBoxIcon.Error); } if (pptApplication != null) { //獲得演示文稿對象 presentation = pptApplication.ActivePresentation; // 獲得幻燈片對象集合 slides = presentation.Slides; // 獲得幻燈片的數量 slidescount = slides.Count; // 獲得當前選中的幻燈片 try { // 在普通視圖下這種方式可以獲得當前選中的幻燈片對象 // 然而在閱讀模式下,這種方式會出現異常 slide = slides[pptApplication.ActiveWindow.Selection.SlideRange.SlideNumber]; } catch { // 在閱讀模式下出現異常時,通過下面的方式來獲得當前選中的幻燈片對象 slide = pptApplication.SlideShowWindows[1].View.Slide; } } } // 第一頁事件 private void btnFirst_Click(object sender, EventArgs e) { try { // 在普通視圖中調用Select方法來選中第一張幻燈片 slides[1].Select(); slide = slides[1]; } catch { // 在閱讀模式下使用下面的方式來切換到第一張幻燈片 pptApplication.SlideShowWindows[1].View.First(); slide = pptApplication.SlideShowWindows[1].View.Slide; } }
下面就看看該遙控程序的運行效果是如何的:
四、小結
到這里本專題的介紹就介紹就結束,其實本程序最好是放在手機客戶端,這樣我們就可以利用手機來對我們的幻燈片進行翻頁了,這樣就和激光筆的效果就是一樣的了,這里就給大家先提供一個思路吧,我相信如果要在手機客戶端實現的話,肯定就需要藍牙編程的技術或者WiFi編程的技術來獲取筆記本電腦的幻燈片應用程序,只要我們成功在手機客戶端獲取了PowerPoint應用程序對象的話,后面的實現過程就和本程序的實現方式就基本一樣的,然而我們同時打開筆記本的藍牙和手機的藍牙(也可以利用WiFi),這樣我們就可以輕松實現用手機來遙控我們演講文稿了,如果有時間的話,也會研究下手機的藍牙編程技術,實現了肯定會在博客中向大家分享的,如果其他朋友提前實現了的,也不要忘記在博客分享給大家了。
程序所有源碼:http://code.msdn.microsoft.com/PowerPoint-42854d28#content (麻煩大家下載的時候幫忙點下評級)