PowerPoint SlideShowSettings.Run () не запускает встроенное видео - PullRequest
0 голосов
/ 18 июня 2010

У меня есть приложение C #, которое работает на компьютере, подключенном к большому дисплею в нашей столовой. Приложение извлекает все файлы PowerPoint из папки и непрерывно запускает каждый из них в виде слайд-шоу. Все работало нормально, пока кто-то не решил вставить клип на слайд. Проблема в том, что фильм никогда не начинается. Если открыть презентацию в PowerPoint и запустить шоу, оно работает, и если я щелкну правой кнопкой мыши на презентации и нажмите «Показать», она работает. Вот код, который я использую, чтобы открыть презентацию и запустить слайд-шоу.

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

Есть ли что-то еще, что мне нужно установить, чтобы метод Run() также запускал фильмы?

Редактировать: В рассматриваемой презентации был только один слайд с фильмом. Если бы я добавил еще один слайд, он работал нормально. Также пытался добавить слайд раньше и имел ту же проблему, поэтому, очевидно, проблема существует только для последнего слайда в презентации.

Ответы [ 2 ]

1 голос
/ 19 июня 2010

Основная проблема заключается в том, что анимации PowerPoint (видео, аудио, пользовательские траектории и т. Д.) Будут воспроизводиться только тогда, когда фокусировка у SlideShowWindow. Это означает, что когда вы запускаете свое приложение и запускаете PPT, ваше приложение все еще сохраняет фокус и, следовательно, анимации не запускаются (что не мешает вам вручную манипулировать вашей беговой колодой).

Есть несколько способов обойти это:

  1. Вы можете вызвать API SetWindow для принесите свой SlideShowWindow к фронт. Не отличный способ сделать это в мое мнение.
  2. Самый простой способ - просто сохранить ваш .ppt / .pptx в .pps / .ppsx (PowerPoint Show). С этим ты можете использовать тот же код, чтобы запустить его и он запустится и примет фокус автоматически (и ваша анимация [видео и др.) будет работать так, как вы запланировали).
0 голосов
/ 22 июня 2010

Нашел проблему. У меня был thread.sleep оператор в обработчике событий app_SlideShowNextSlide презентации, который обрабатывал конец одного слайд-шоу и запуск следующего. Я не думал тогда, и этот код работал в том же потоке на самом слайд-шоу. Вместо этого я создал объект таймера и переместил необходимый код в обработчик событий elapsed таймера.

...