如何使用C#進行PPT展示。


 

先明確下需要達到的目標:

1、可以使用C#程序(WinForm和WPF)打開一個PPT文件,並且可以切換到展示模式

2、可以程序的控制PPT的動作。例如上一頁下一頁等。

3、程序可以獲得PPT展示的信息。例如播放到了第幾頁。

4、可以將PPT展示的窗口嵌入到自己的界面中。

5、程序可以獲得該頁的文檔內容。(里面的鏈接,視頻,文字等)

0、准備工作

首先要添加

Microsoft.Office.Interop.PowerPoint

office

兩個引用,在安裝了Office以后一般情況就已經有了。

聲明一下成員

 

這是幾乎需要用到的所有成員。

1、打開PPT文件,並展示

(1)打開PPT文件

objPresSet = objApp.Presentations;
objPres = objPresSet.Open(strTemplate, MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue);

程序運行這兩句以后,Office軟件就自動的達開了。

(2)進入展示模式

            objSlides = objPres.Slides;
            int[] SlideIdx = new int[3];
            for (int i = 0; i < 3; i++)
                SlideIdx[i] = i + 1;
            objSldRng = objSlides.Range(SlideIdx);
            objSST = objSldRng.SlideShowTransition;
            objSST.AdvanceOnTime = MsoTriState.msoTrue; objSST.AdvanceTime = 3;
            objSST.EntryEffect = PowerPoint.PpEntryEffect.ppEffectBoxOut;

            objSSS = objPres.SlideShowSettings;
            //如過你不想循環放映就把TRUE改成FALSE. 
            objSSS.LoopUntilStopped = MsoTriState.msoFalse;
            objSSS.StartingSlide = 1;
            objSSS.EndingSlide = objSlides.Application.ActivePresentation.Slides.Count;
            objSSS.Run(); //Wait for the slide show to end. 


這段代碼來源為:http://blog.sina.com.cn/s/blog_609388b70100fny6.html 然后進行了稍許的修改。

運行到objSSS.Run()后PPT進入到了播放模式。

(3)獲取到PPT展示情況的信息。

objApp中有提供了很多事件,例如展示到下一頁,展示開始,展示結束等。這里舉例如何獲取現在正在播放第幾個頁面。

objApp.SlideShowNextSlide += objApp_SlideShowNextSlide;

為objApp的滑倒下一頁面添加事件處理函數。(需要注意是,這個事件在演示着切換頁面的時候觸發,無論他是進入下一頁還是上一頁)

void objApp_SlideShowNextSlide(PowerPoint.SlideShowWindow Wn)
        {
            int p = Wn.View.CurrentShowPosition;
            textBox1.BeginInvoke(new MethodInvoker(()=>textBox1.Text = p.ToString()));
        }

事件處理函數的參數是當前展示的頁面。可以讀取到一些相關的信息,例如正在展示第幾個頁面。這里獲取到了正在展示頁面的位置,並將其顯示在窗口上。

(4)將PPT展示的窗口嵌入到自己的界面中

在事件處理函數中返回這個PPT展示的串口,Wn.HWDN就是現實窗口的句柄。

獲得了這個句柄以后就可以使用Windows API中的SetParent函數將這個窗口綁到自己的窗口中來。

(5)獲取制定頁面的內容

有兩個方法可以獲得制定頁面的制定內容。

一種是使用OpenXML

另一種是繼續使用Office提供的COM接口。

具體的獲得方法我將在另外一篇文章中詳細的介紹。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM