Nev*_*ack 16 .net c# video winforms powerpoint-2007
我想制作一个能够启动,暂停,停止,关闭测验演示的表单控件(按下开始时将运行倒计时时间).问题出在一些演示文稿中,有可用的视频(每张幻灯片最多只能包含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);
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试过此链接的一些解决方案
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但结果是它给了我一个错误:
无效参数无法从Microsoft.Office.Interop.PowerPoint.Slide转换为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;
}
}
Run Code Online (Sandbox Code Playgroud)
更新 @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;
Run Code Online (Sandbox Code Playgroud)
我的程序可以正常运行,但是当我按下开始(播放视频和运行倒数计时器)时,它会给出错误
序列(未知成员):非法值.对象不存在.
更新 @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;
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的脚本,我可以检测活动幻灯片中是否包含视频
但是〜var~playVideo仍然在幻灯片中包含
我缺少的视频吗?
小智 1
尝试这个:
playVideo.Timing.TriggerType = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |