0

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. I was able to do so using winform but not in WPF. In winform I used panel control in which I embedded the ppt. panel is replaced by canvas in WPF but I do not know how I can embed ppt in it. is there any other approach than this please share? I can not use XPS as it does not support any animation.

        //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"**
Jeet
  • 5,569
  • 8
  • 43
  • 75

1 Answers1

0

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 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!

ViVi
  • 4,339
  • 8
  • 29
  • 52
  • Thanx but I need it to interact with user means user can toggle b/w next and previous slide – user3165463 Jul 11 '16 at 07:25
  • I am afraid, you may need to create the slides inside the application itself as controls using next/previous button. Else why don't you just open the `ppt` file from the application? – ViVi Jul 11 '16 at 07:27
  • If you're ready to spend some time for this, give this article a read : http://www.codeproject.com/Articles/118676/Embedding-PowerPoint-presentation-player-into-a-WP – ViVi Jul 11 '16 at 07:31
  • it helped....but now I am facing another issue now . I can not set buttons over the open ppt . buttons do showed up as I start application but when I launch ppt all over the screen taken by slide . I want to set buttons over it so that I can control ppt and also ppt animation does not work. – user3165463 Jul 14 '16 at 08:19