0

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

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

我还需要设置其他什么来获得Run()启动电影的方法吗?

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

4

2 回答 2

1

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

有几种方法可以解决这个问题:

  1. 您可以调用 APISetWindow将您SlideShowWindow带到最前面。在我看来,这不是一个好方法。
  2. 最简单的方法就是将您的 .ppt/.pptx 保存为 .pps/.ppsx(PowerPoint 放映)。这样,您可以使用相同的代码来运行它,它会自动启动并获得焦点(并且您的动画 [视频等)将按照您的预期运行)。
于 2010-06-19T00:00:21.560 回答
-2

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

于 2010-06-22T12:29:08.787 回答