Ответ 1
Попробуйте следующее:
playVideo.Timing.TriggerType = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;
Я хочу создать элемент управления формой, который будет способен запускать, приостанавливать, останавливать, закрывать презентацию викторины (время обратного отсчета будет работать при нажатии на старт). Проблема в некоторых презентациях, есть доступное видео (каждый слайд может содержать максимум 1 видео, и не каждый слайд содержит его).
Это некоторые фрагменты кода, которые я использовал для добавления видео в метод createPresentation
:
PowerPoint.Slides oSlides = null;
PowerPoint.Slide oSlide = null;
int ctrSoal = 0;
foreach (CQuestion myQuestion in Global.questions)
{
ctrSoal++;
oSlides = oPre.Slides;
oSlide = oSlides.Add(ctrSoal, PowerPoint.PpSlideLayout.ppLayoutTextAndTwoObjects);
oShape2 = oSlide.Shapes[4];
oSlide.Shapes.AddMediaObject(System.IO.Path.Combine(Global.myVideoLocation, myQuestion.video), oShape2.Left, oShape2.Top, oShape2.Width, oShape2.Height);
До сих пор я уже пробовал некоторые решения из этой ссылки
private void startToolStripMenuItem_Click(object sender, EventArgs e)
{
PowerPoint.Slides oSlides = null;
PowerPoint.Slide oSlide = null;
int ctrSoal = 0;
foreach (CQuestion myQuestion in Global.questions)
{
ctrSoal++;
oSlides = oPre.Slides;
oSlide = oSlides.Add(ctrSoal, PowerPoint.PpSlideLayout.ppLayoutTextAndTwoObjects);
var playVideo = oSlide.TimeLine.MainSequence.FindFirstAnimationFor(oSlide);
}
questionIndex = oPre.SlideShowWindow.View.Slide.SlideIndex - 1;
questionId = myQuiz.questions[questionIndex].id;
if (labelTimer.Text != "Paused")
{
duration = 0;
duration += myQuiz.questions[questionIndex].durationMinute * 60;
duration += myQuiz.questions[questionIndex].durationSecond;
labelKeypadID.Text = "";
for (int i = 0; i < jumlahJawaban; i++)
{
arrChart[i] = 0;
}
}
}
Но это дает мне ошибку в результате:
неверные аргументы не могут конвертировать из Microsoft.Office.Interop.PowerPoint.Slide to Microsoft.Office.Interop.PowerPoint.Shape
Цель, которую я хочу достичь, - это элемент управления формой, который может воспроизводить видео, когда пользователь нажимает кнопку запуска (отсчет работает вниз), а не автоматически воспроизводится при запуске слайд-шоу.
UPDATE
Я попробовал это. Программа может работать без ошибок, но видео по-прежнему не воспроизводится.
PowerPoint.Shapes objShapes = null;
objShapes = oPre.Slides[1].Shapes;
foreach (Microsoft.Office.Interop.PowerPoint.Shape s in objShapes)
{
if (s.Name.Contains(".wmv"))
{
s.AnimationSettings.PlaySettings.PlayOnEntry = Office.MsoTriState.msoTrue;
}
}
ОБНОВЛЕНИЕ @jonPall
Я попробовал следующее:
PowerPoint.Slide oSlide = null;
PowerPoint.Shape objShape = null;
PowerPoint.Slides oSlides = null;
PowerPoint.Shapes objShapes = null;
int ctrSoal = 1;
oSlides = oPre.Slides;
oSlide = oSlides.Add(ctrSoal, PowerPoint.PpSlideLayout.ppLayoutTextAndTwoObjects);
objShapes = oPre.Slides[1].Shapes;
var playVideo = oSlide.TimeLine.MainSequence.FindFirstAnimationFor(objShape);
playVideo.Timing.TriggerType = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;
Моя программа может работать без ошибок, но когда я нажимаю кнопку запуска (чтобы воспроизводить видео и запускать таймер обратного отсчета), он дает ошибку
Последовательность (неизвестный член): Недопустимое значение. Объект не существует.
ОБНОВЛЕНИЕ @Andy
PowerPoint.Slide oSlide = null;
PowerPoint.Slides oSlides = null;
PowerPoint.Shapes objShapes = null;
int ctrSoal = 1;
oSlides = oPre.Slides;
oSlide = oSlides.Add(ctrSoal, PowerPoint.PpSlideLayout.ppLayoutTextAndTwoObjects);
int indexSlide = oPre.SlideShowWindow.View.Slide.SlideIndex;
objShapes = oPre.Slides[indexSlide].Shapes;
foreach (Microsoft.Office.Interop.PowerPoint.Shape objShape in objShapes) {
string extension = Path.GetExtension(objShape.Name);
if (extension == ".wmv") {
//MessageBox.Show("Video Available");
var playVideo = oSlide.TimeLine.MainSequence.FindFirstAnimationFor(objShape);
playVideo.Timing.TriggerType = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;
}
}
с над script я могу обнаружить, если в активном слайде содержится видео или нет
но ~ var ~ playVideo все еще null в слайде содержат видео
где я не хватает?
Попробуйте следующее:
playVideo.Timing.TriggerType = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;