繁体   English   中英

如何从 Windows 8.1 应用程序打开 Powerpoint

[英]How to open powerpoint from Windows 8.1 app

我正在尝试构建一个 Windows 8.1 应用程序,该应用程序可以全屏打开本地计算机的 powerpoint 文件,其中包含三个按钮来执行下一个、上一个和退出。 我能够使用 winform 但在 WPF 中无法做到这一点。 在winform中,我使用了嵌入ppt的面板控件。 面板被 WPF 中的画布取代,但我不知道如何在其中嵌入 ppt。 除了这个还有其他方法请分享吗? 我不能使用 XPS,因为它不支持任何动画。

        //System.Diagnostics.Process.Start("POWERPNT.EXE",     "C:/Users/SAURABH/Desktop/office/Engineer's.pptx");
        //    Microsoft.Office.Interop.PowerPoint.Application   application;

        //    // For Display in Panel
        //    IntPtr screenClasshWnd = (IntPtr)0;
        //    IntPtr x = (IntPtr)0;


        //    application = new Microsoft.Office.Interop.PowerPoint.Application();

        //    Microsoft.Office.Interop.PowerPoint.Presentation presentation = application.Presentations.Open(@"C:\Users\delink\Documents\SAMPLE_PPT.pptx", MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
        //    pptViewPanel.Children.Add(application as Control);
        //    //pptViewPanel.Controls.Add(application as Control);
        //    Microsoft.Office.Interop.PowerPoint.SlideShowSettings sst1 = presentation.SlideShowSettings;

        //    sst1.LoopUntilStopped = Microsoft.Office.Core.MsoTriState.msoTrue;

        //    Microsoft.Office.Interop.PowerPoint.Slides objSlides = presentation.Slides;

        //    sst1.LoopUntilStopped = MsoTriState.msoTrue;

        //    sst1.StartingSlide = 1;
        //    sst1.EndingSlide = objSlides.Count;

        //   // pptViewPanel.Dock = DockStyle.Fill;

        //    sst1.ShowType = Microsoft.Office.Interop.PowerPoint.PpSlideShowType.ppShowTypeKiosk;

        //    Microsoft.Office.Interop.PowerPoint.SlideShowWindow sw = sst1.Run();
        //    //sw=Objssws
        //    oSlideShowView = presentation.SlideShowWindow.View;

        //    IntPtr pptptr = (IntPtr)sw.HWND;
        // SetParent(pptptr, pptViewPanel.handle);**"**this where I am getting-"in 'pptviewpanel.handle'"** rror"**

您可以即时将演示文稿转换为视频格式:

// not tested as I don't have the Office 2010, but should work
private string GetVideoFromPpt(string filename)
{
    var app = new PowerPoint.Application();
    var presentation = app.Presentations.Open(filename, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);

    var wmvfile = Guid.NewGuid().ToString() + ".wmv";
    var fullpath = Path.GetTempPath() + filename;

    try
    {
        presentation.CreateVideo(wmvfile);
        presentation.SaveCopyAs(fullpath, PowerPoint.PpSaveAsFileType.ppSaveAsWMV, MsoTriState.msoCTrue);
    }
    catch (COMException ex)
    {
        wmvfile = null;
    }
    finally
    {
        app.Quit();
    }

    return wmvfile;
}

然后,您可以使用MediaElement进行播放:

<MediaElement Name="player" LoadedBehavior="Manual" UnloadedBehavior="Stop" />

public void PlayPresentation(string filename)
{
    var wmvfile = GetVideoFromPpt(filename);
    player.Source = new Uri(wmvfile);
    player.Play();
}

播放完视频后,不要忘了File.Delete(wmvfile)!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM