C # - Показать презентации PowerPoint непрерывно - PullRequest
0 голосов
/ 25 января 2011

Я хочу воспроизвести некоторые 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;
    }

1 Ответ

1 голос
/ 25 января 2011

К сожалению, нет, вы не можете сделать это с несколькими файлами PowerPoint.До PowerPoint 2010 нельзя одновременно запускать более одного PPT (и даже с PP2010 это будет непросто).Таким образом, закрыв один и открыв новый для запуска, вы потеряете главное окно запуска.

Вы можете создать несколько экземпляров PowerPoint, установить их как видимые / скрытые, а затем, когда закончится одно слайд-шоу, программно отобразить следующееодин и отобразить его для запуска, но это будет страдать от той же проблемы мерцания, как у вас уже есть.

Лучшее, что вы можете сделать, это прочитать все ppts в каталоге, объединить их все в новую колоду вПорядок, в котором вы нуждаетесь (и указание макетов и т. д.), а затем запустите эту единственную колоду в цикле киоска.

...