Вот простая демонстрация, чтобы сделать это:
не забудьте добавить ссылку на API-интерфейс PowerPoint COM
(Библиотека объектов Microsoft PowerPoint 12.0).
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;
тогда вы можете получить путь к фильму, как это
private void button1_Click(object sender, EventArgs e)
{
PowerPoint.Application app = new PowerPoint.Application();
app.Visible = Office.MsoTriState.msoTrue;
//open powerpoint file in your hard drive
app.Presentations.Open(@"e:\my tests\hello world.pptx");
foreach (PowerPoint.Slide slide in app.ActivePresentation.Slides)
{
PowerPoint.Shapes slideShapes = slide.Shapes;
foreach (PowerPoint.Shape shape in slideShapes)
{
if (shape.Type == Office.MsoShapeType.msoMedia &&
shape.MediaType == PowerPoint.PpMediaType.ppMediaTypeMovie)
{
//LinkFormat.SourceFullName contains the movie path
//get the path like this
listBox1.Items.Add(shape.LinkFormat.SourceFullName);
//or use System.IO.File.Copy(shape.LinkFormat.SourceFullName, SOME_DESTINATION) to export them
}
}
}
}
Надеюсь, это поможет.
[Edit:]
относительно комментария Стива, если вам нужны только встроенные фильмы, вам нужно просто распаковать файл .pptx, как и любой другой zip-файл (например, используя DotNetZip), и искать встроенные видео по этому пути ([PowerPoint_fileName] \ ppt \ media)