如何使用C#操作幻燈片
記得老師講課的時(shí)候,經(jīng)常會用PPT遙控翻頁筆來遙控幻燈片來給我們講課,當(dāng)時(shí)覺得非常有趣,由于這段時(shí)間接觸了VSTO相關(guān)的開發(fā),了解到了Office的相關(guān)產(chǎn)品都公開了一些API來讓我們對Office產(chǎn)品進(jìn)行二次開發(fā),這時(shí)候我就想,能不能用PowerPoint公開的對象來制作一個(gè)遙控幻燈片的程序呢?在本專題就向大家介紹下這個(gè)小工具的實(shí)現(xiàn)思路和效果。
實(shí)現(xiàn)思路
1、既然要實(shí)現(xiàn)的程序是遙控幻燈片,這樣我們就需要先獲得幻燈片應(yīng)用程序的,在PowerPoint對象模型中,Microsoft.Office.Interop.PowerPoint.Application代表Powerpoint應(yīng)用程序,這點(diǎn)和Word、Excel和Outlook都是一樣的。
2、獲得了幻燈片應(yīng)用程序?qū)ο笾?,之后我們就需要獲得幻燈片對象,因?yàn)槲覀冞b控的是幻燈片,在PowerPoint對象模型中也提供了幻燈片對象,即Microsoft.Office.Interop.PowerPoint.Slide。由于幻燈片又是存在于演示文稿中的,所以我們要想獲得幻燈片對象,就需要先獲得演示文稿對象,Microsoft.Office.Interop.PowerPoint.Presentation 就是代表演示文稿對象。
3、獲得幻燈片對象之后,我們就可以利用幻燈片對象的Select方法來進(jìn)行幻燈片的切換,然而在閱讀模式的情況下,不能用Select方法來進(jìn)行翻頁,此時(shí)需要另一種方式來實(shí)現(xiàn),即調(diào)用 Microsoft.Office.Interop.PowerPoint.SlideShowView對象的First,Next,Last,Previous方法來進(jìn)行幻燈片翻頁
下面一張是閱讀模式下程序中實(shí)現(xiàn)翻頁功能與在幻燈片中的對應(yīng)關(guān)系:
遙控幻燈片程序的實(shí)現(xiàn)
有了上面的解釋,我們再看下面的實(shí)現(xiàn)代碼時(shí),相信大家肯定不會覺得有任何難道了,下面就直接貼出部分的實(shí)現(xiàn)的代碼
/// <summary> /// 檢查是否打開幻燈片程序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> privatevoid btnCheck_Click(object sender, EventArgs e) { // 必須先運(yùn)行幻燈片,下面才能獲得PowerPoint應(yīng)用程序,否則會出現(xiàn)異常 // 獲得正在運(yùn)行的PowerPoint應(yīng)用程序 try { pptApplication = Marshal.GetActiveObject("PowerPoint.Application") as PPt.Application; // 成功獲取了PowerPoint程序時(shí),使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; // 獲得幻燈片的數(shù)量 slidescount = slides.Count; // 獲得當(dāng)前選中的幻燈片 try { // 在普通視圖下這種方式可以獲得當(dāng)前選中的幻燈片對象 // 然而在閱讀模式下,這種方式會出現(xiàn)異常 slide = slides[pptApplication.ActiveWindow.Selection.SlideRange.SlideNumber]; } catch { // 在閱讀模式下出現(xiàn)異常時(shí),通過下面的方式來獲得當(dāng)前選中的幻燈片對象 slide = pptApplication.SlideShowWindows[1].View.Slide; } } } // 第一頁事件 privatevoid btnFirst_Click(object sender, EventArgs e) { try { // 在普通視圖中調(diào)用Select方法來選中第一張幻燈片 slides[1].Select(); slide = slides[1]; } catch { // 在閱讀模式下使用下面的方式來切換到第一張幻燈片 pptApplication.SlideShowWindows[1].View.First(); slide = pptApplication.SlideShowWindows[1].View.Slide; } }
下面就看看該遙控程序的運(yùn)行效果是如何的:
小結(jié)
到這里本專題的介紹就結(jié)束了,其實(shí)本程序最好是放在手機(jī)客戶端,這樣我們就可以利用手機(jī)來對我們的幻燈片進(jìn)行翻頁了,這樣就和激光筆的效果就是一樣的了,這里就給大家先提供一個(gè)思路吧,我相信如果要在手機(jī)客戶端實(shí)現(xiàn)的話,肯定就需要藍(lán)牙編程的技術(shù)或者WiFi編程的技術(shù)來獲取筆記本電腦的幻燈片應(yīng)用程序,只要我們成功在手機(jī)客戶端獲取了PowerPoint應(yīng)用程序?qū)ο蟮脑?,后面的?shí)現(xiàn)過程就和本程序的實(shí)現(xiàn)方式就基本一樣的,然而我們同時(shí)打開筆記本的藍(lán)牙和手機(jī)的藍(lán)牙(也可以利用WiFi),這樣我們就可以輕松實(shí)現(xiàn)用手機(jī)來遙控我們演講文稿了。
以上就是本文給大家分享的使用C#制作幻燈片的全過程,希望大家可以喜歡。
相關(guān)文章
基于NET?Core?的Nuget包制作、發(fā)布和運(yùn)用流程解析(完整過程)
這篇文章主要介紹了基于NET?Core?的Nuget包制作、發(fā)布和運(yùn)用流程,本文通過圖文并茂的形式給大家介紹了Nuget包制作過程,感興趣的朋友跟隨小編一起看看吧2022-02-02Unity3D Shader實(shí)現(xiàn)動態(tài)星空
這篇文章主要為大家詳細(xì)介紹了Unity3D Shader實(shí)現(xiàn)動態(tài)星空,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04C#使用throw和throw?ex拋出異常的區(qū)別介紹
這篇文章介紹了C#使用throw和throw?ex拋出異常的區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10