我想在连续循环中播放一些ppt
文件,但是当我在第一张幻灯片到达最后一张幻灯片后打开一个新文件时,会打开一个新的PowerPoint窗口并启动幻灯片。
我该如何解决这个问题?
public Microsoft.Office.Interop.PowerPoint.SlideShowWindow startppt(string pptDatei)
{
WatchingLabel.Text = "Präsentation läuft...";
started = true;
ende = false;
objPres = ppApp.Presentations.Open(pptDatei, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoTrue);
objPres.SlideShowSettings.ShowWithAnimation = Microsoft.Office.Core.MsoTriState.msoTrue;
presWin = objPres.SlideShowSettings.Run();
return presWin;
}
private void timer1_Tick(object sender, EventArgs e)
{
WatchingLabel.Text = "Watching...";
if (System.IO.Directory.Exists(ordner))
{
pptDatei.Clear();
pptDatei.AddRange(System.IO.Directory.GetFiles(ordner, "*.ppt"));
if (started == true && presWin.View.State == Microsoft.Office.Interop.PowerPoint.PpSlideShowState.ppSlideShowDone)
{
objPres.Close();
ende = true;
started = false;
}
if (pptDatei.Count > 0 && ende && started == false)
{
if (index < pptDatei.Count)
{
startppt(pptDatei[index]);
index += 1;
}
else
{
index = 0;
}
}
else if (pptDatei.Count > 0 && ende == false && started == true)
{
presWin.View.Next();
}
}
}
public void ppApp_PresentationClose(Microsoft.Office.Interop.PowerPoint.Presentation Pres)
{
pptDatei = new List<string>();
started = false;
ende = true;
WatchingLabel.Text = "Präsentation beenden...";
}
public void ppApp_SlideShowEnd(Microsoft.Office.Interop.PowerPoint.Presentation Pres)
{
ende = true;
started = false;
}
答案 0 :(得分:1)
不幸的是,不,你不能用多个PowerPoint文件来做这件事。在PowerPoint 2010之前,您不能同时运行多个PPT(即使使用PP2010,也不能这样做)。因此,通过关闭一个并打开一个新的运行,您将失去主运行窗口。
您可以创建多个PowerPoint实例,将它们设置为可见/隐藏,然后当一个幻灯片结束时,以编程方式取消隐藏下一个并显示它以运行,但这将遭受与您已有的相同的闪烁问题。
您可以做的最好的事情是阅读目录中的所有ppts,按照您需要的顺序将它们全部合并到一个新的牌组中(并指定布局等),然后在Kiosk循环中运行该单板。 / p>