[DllImport("user32.dll")]
public extern static int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

/// <summary>
/// 打开ppt文件
/// </summary>
/// <param name="filePath">路径</param>
/// <returns></returns>
public string PPTOpen(string filePath)
{
StringBuilder s = new StringBuilder(512);
//防止连续打开多个PPT程序.
if (this.objApp != null)
{
this.objApp.Quit();
GC.Collect();
}
try
{
objApp = new POWERPOINT.Application();
//以非只读方式打开,方便操作结束后保存.
objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse);

//objSlides = objPresSet.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 = 5;
//objSST.EntryEffect = POWERPOINT.PpEntryEffect.ppEffectBoxOut;

//bAssistantOn = objApp.Assistant.On;
objApp.Assistant.On = false;
objSSS = this.objPresSet.SlideShowSettings;
pptCount = objPresSet.Slides.Count;
//objSSS.ShowType = POWERPOINT.PpSlideShowType.ppShowTypeWindow;
objSSS.Run();
IntPtr aa = (IntPtr)objPresSet.SlideShowWindow.HWND;
int j = GetWindowText(aa, s, s.Capacity); //把this.handle换成你需要的句柄
}
catch (Exception ex)
{
this.objApp.Quit();
}
return s.ToString();
}

以阅览模式打开PPT文件,这个嗯简单,通过getwindowtext,获取到打开PPT的句柄,便于之后将句柄在winform的窗体中显示

//将ppt嵌入到你想嵌入的控件中
private void intoWebbrower(string pptTitle)
{
ParenthWnd = new IntPtr(0);
ParenthWnd = FindWindow(null, pptTitle);//123.pptx - WPS 演示

SetParent(ParenthWnd, this.pictureBox1.Handle);
int x = 0;
int y = 0;
int width = this.pictureBox1.Width;
int height = this.pictureBox1.Height-100;
MoveWindow(ParenthWnd, x, y, width, height, true);
}

通过SetParent可以现实前面获取到句柄的PPT嵌入到控件中的

而MoveWindow是控制句柄在控件中显示的位置和大小

对于PPT其他的操作上一页下一页就挺简单的了,可以查阅MSDN的Powerpoint

//上一页
public void preButton()
{
try
{
objPresSet.SlideShowWindow.View.Previous();
}
catch { }
}

//下一页
public void nextButton()
{
try
{
objPresSet.SlideShowWindow.View.Next();
}
catch { }
}

播放PPT还有一个比较麻烦的就是需要及时的释放掉PPT的句柄,否者会一直被占用这

public void PPTExit()
{
try
{
if (objApp != null)
objApp.SlideShowWindows[1].View.Exit();
}
catch { }
}

而轮播的效果也可以通过objApp.SlideShowWindows[1].View.Slide.SlideIndex目前播放的是第几页来实现轮播的效果,

检测到是最后一页是objPresSet.SlideShowWindow.View.First();,就OK了

转载于:https://www.cnblogs.com/yaomingke/p/7264311.html

C# winform以阅览模式打开PPT,并控制PPT上下页,轮播相关推荐

  1. C#将PPT文件转换成图片并轮播展示

    本人小白一个,初次接触C#,各位大神还请多多点出不足,谢谢! 项目需求是:User将PPT文件上传后,公司大厅电视看板内容随即改变为上传PPT文件内容,并进行轮播显示 思路:1,实现将PPT文件打开并 ...

  2. 命令行下安装的tensorflow怎么打开_CourseMaker微课制作教程18:录ppt一直“正在打开……”及WPS下ppt满屏放映怎么办?...

    有些用户使用微课制作软件CourseMaker ,录制PPT时,PPT导入不成功,一直停留在"正在打开文件,请稍后--"的页面. 或者是出现"导入PPT失败,请检查PPT ...

  3. python2打开文件_关于python:何时以二进制模式打开文件(b)?

    我注意到在文档中他们总是用'wb'打开一个CSV文件. 为什么'b'? 我知道b代表二进制模式,但是你什么时候使用二进制模式(我猜想CSV文件不是二进制模式). 如果相关我是从arcpy.da.Sea ...

  4. python以写模式打开录入_Python的学习(六)—-文件和输入输出处理 | 学步园

    Python中的文件和输入输出处理 1. 文件对象的概念 文件对象不仅可以用来访问普通的磁盘文件,还可以访问任何其他类型抽象层面上的文件. 例如实时地"打开一个URL"来读取Web ...

  5. open() 函数以 w+ 模式打开文件

    这种模式打开文件时,会先清空文件,然后才执行读写操作,当我们要执行读操作时,需要通过 seek() 方法将读取指针移到前面,才能读取内容 [root@localhost ~]$ cat 1.txt # ...

  6. VSCode前端文件(html文件)如何以服务器模式打开?

    方法1: VSCode前端文件(html文件)如何以服务器模式打开?比如工程下有一个A.html文件,想在VSCode里面直接操作,就想Webstorm一样,以http://localhost/xxx ...

  7. html打开ppt自动播放,ppt文件怎么打开就可以全屏自动播放

    我们制作PPT是为了演示我们的幻灯片文稿,ppt文件打开后还需要去点击powerpoint菜单中的"幻灯片放映"才能播放,这很多时候有种麻烦的感觉,能否直接自动播放PPT呢?ppt ...

  8. 如何让浏览器用极速模式打开网站而不是兼容模式

    作为网站开发者和站长,希望网站的访问用户都以极速模式打开网站,也是可以实现的,我们可以使用双核浏览器提供的meta标签去实现. 1.我们只需要在 标签后面添加一段代码即可,如下所示: <meta ...

  9. 在IE禁用的情况下,如何用Microsoft Edge以兼容模式打开网页?

    用Microsoft Edge兼容模式打开 打开 Microsoft Edge:在搜索栏中搜索并打开 Microsoft Edge,点击右上角的三个点打开设置或其他,或者通过快捷键Alt + F 打开 ...

最新文章

  1. 使用dd查看磁盘前4个扇区的内容
  2. MIGO相关bapi:BAPI_GOODSMVT_CREATE 移动类型314 E
  3. 程序运行过程中遇到“ORA-03114: not connected to ORACLE”的问题解决
  4. 【数据竞赛】竞赛宝典黑科技:基于开源结果的高端融合策略
  5. 平面设计中的网格系统pdf_深入浅出,带你认识网格系统与版式设计
  6. 在html中不显示内容是,网页中显示的内容在源文件中找不到是什么原因_html/css_WEB-ITnose...
  7. C# 线程的各种知识,和使用方法
  8. 利用计算机绘制地质图的思路和方法,基于平面地质图的三维地质建模方法研究...
  9. Memcached学习---(2)Linux Memcached 安装
  10. arp协议属于哪一层_TCP/IP协议栈-之-ARP协议分析
  11. 百分点零售行业大数据解决方案
  12. iOS检测QQ是否安装
  13. javaweb(06) 初步了解HTTP协议
  14. 小程序不同页面之间通讯的解决方案 1
  15. js篇1-数组基础方法
  16. 海康威视摄像头Android直播APP开发
  17. 学习强国中车万翔老师回文数代码在python3.7中输出inf问题
  18. 平均值 几何平均数 算术平均数 调和平均数 平方平均数
  19. 有道云笔记markdown字体增大、生成目录
  20. 含根式的定积分计算_三种方式计算不定积分∫x√(x+1)dx。

热门文章

  1. 车险三者险可以垫付医药费吗?
  2. 同事经常蹭我的车,我该怎么拒绝?
  3. 一年四季,你最喜欢哪个季节出去旅游?
  4. 都说开完电动汽车,就不想再开回燃油车了,是这样吗?
  5. 一公顷等于多少平方米
  6. 为什么把钱花在别人身上更幸福?
  7. 互联网裁员屡见不鲜,但有时互联网的裁员却不太体面
  8. 真正能成大事的人,往往有一个“共同特征”
  9. 读取速度500m/s和1000m/s的硬盘,装系统使用起来有区别吗?
  10. Recommendation