PowerPoint SlideShowSettings.Run()不运行嵌入的视频

时间:2010-06-18 17:00:46

标签: c# powerpoint slideshow movie embedded-video

我有一个C#应用程序,它运行在连接到我们自助餐厅大型显示器的计算机上。该应用程序从文件夹中提取所有PowerPoint文件,并以幻灯片形式连续运行每个文件。一切都工作正常,直到有人决定将一个影片剪辑插入幻灯片。问题是电影永远不会开始。如果在PowerPoint中打开演示文稿并运行它可以正常运行,如果我右键单击演示文稿并单击“显示”它就可以工作。这是我用来打开演示文稿并开始播放幻灯片的代码。

pres = app.Presentations.Open(pptPath, MsoTriState.msoTrue, MsoTriState.msoTrue, MMsoTriState.msoFals);
pres.SlideShowSettings.Run();

我还需要设置其他内容才能让Run()方法启动电影吗?

编辑:有问题的演示文稿中只有一张包含电影的幻灯片。如果我添加了另一张幻灯片,它工作正常。还尝试过添加幻灯片并遇到同样的问题,所以显然问题只存在于演示文稿的最后一张幻灯片中。

2 个答案:

答案 0 :(得分:1)

这里的主要问题是PowerPoint动画(视频,音频,自定义动画路径等)仅在SlideShowWindow具有焦点时才会播放。这意味着当您运行应用程序并启动PPT时,您的应用程序仍会保持焦点,因此动画不会运行(但这并不会阻止您手动操作正在运行的平台)。

有几种解决方法:

  1. 您可以调用API SetWindow 把你的SlideShowWindow带到 面前。这不是一个好方法 我的意见。
  2. 最简单的方法就是保存 你的.ppt / .pptx到.pps / .ppsx (PowerPoint秀)。有了它,你 可以使用相同的代码来运行它 它将启动并成为焦点 自动(和你的动画[视频,等]将按照你的意图运行。)

答案 1 :(得分:-2)

发现问题。我在演示文稿的thread.sleep事件处理程序中有一个app_SlideShowNextSlide语句,用于处理一个幻灯片的结束并开始下一个幻灯片。我当时没有想到这个代码是在幻灯片本身的同一个线程中运行的。我创建了一个计时器对象,并将必要的代码移动到计时器的elapsed事件处理程序中。