简体   繁体   English

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

[英]How to open powerpoint from Windows 8.1 app

I am trying to build an windows 8.1 app that open powerpoint file from local computer in full screen, and within that it contain three buttons to perform next ,previous and exit.我正在尝试构建一个 Windows 8.1 应用程序,该应用程序可以全屏打开本地计算机的 powerpoint 文件,其中包含三个按钮来执行下一个、上一个和退出。 I was able to do so using winform but not in WPF.我能够使用 winform 但在 WPF 中无法做到这一点。 In winform I used panel control in which I embedded the ppt.在winform中,我使用了嵌入ppt的面板控件。 panel is replaced by canvas in WPF but I do not know how I can embed ppt in it.面板被 WPF 中的画布取代,但我不知道如何在其中嵌入 ppt。 is there any other approach than this please share?除了这个还有其他方法请分享吗? I can not use XPS as it does not support any animation.我不能使用 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"**

You could convert your presentation to a video format on-the-fly: 您可以即时将演示文稿转换为视频格式:

// 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;
}

And then you would play it with MediaElement: 然后,您可以使用MediaElement进行播放:

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

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

Don't forget to File.Delete(wmvfile) when you're done playing the video! 播放完视频后,不要忘了File.Delete(wmvfile)!

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

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