3

我有一个将 powepoint 文件嵌入到 webBrowser 控件中的 wpf 应用程序。我设法使用下面的示例代码实现了该功能。但每当我运行 ppt 文件时,幻灯片放映会在屏幕中弹出几秒钟,然后只有它嵌入到控件中。有什么办法可以阻止它或将其作为后台进程运行?

using System;
using System.Runtime.InteropServices;
using System.Windows;
using Microsoft.Office.Core;
using PPT = Microsoft.Office.Interop.PowerPoint;

namespace WpfApplication1
{
    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        [DllImport("User32", CharSet = CharSet.Auto, ExactSpelling = true)]
        internal static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndParent);

        private void BtnOpenClick(object sender, RoutedEventArgs e)
        {
            const string pptFilePath = @"E:\Sample.ppt";
            var pptApplication = new PPT.Application
            {
                ShowWindowsInTaskbar = MsoTriState.msoFalse 
            };            

            var presentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoCTrue,
                                                                          MsoTriState.msoTrue, MsoTriState.msoFalse);

            var slideShowWindow = presentation.SlideShowSettings.Run();

            slideShowWindow.Height = (int)(0.85 * webBrowser1.Height);
            slideShowWindow.Width = (int)(0.75 * webBrowser1.Width);           

            SetParent(new IntPtr(presentation.SlideShowWindow.HWND), webBrowser1.Handle);
        }
    }
}
4

2 回答 2

1

我遇到了同样的问题,我使用了 Patrick Reisert 的这个解决方案。他使用 powerpointviewer 而不是 powerpoint,并将幻灯片转换为位图列表。它是一个具有导航功能的综合解决方案。

于 2013-10-30T08:43:32.513 回答
-1

您也可以通过我实现的另一种方式来打开 ppt/pps。它会以全屏模式直接在顶部打开您的 ppt/pps 文件。如果你想这样做,试试这个。

 Microsoft.Office.Interop.PowerPoint.Application application = new Microsoft.Office.Interop.PowerPoint.Application();
                Microsoft.Office.Interop.PowerPoint.Presentation presesntation = application.Presentations.Open2007("file path", Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue);
                Microsoft.Office.Interop.PowerPoint.SlideShowSettings sst = presesntation.SlideShowSettings;
                sst.ShowType = Microsoft.Office.Interop.PowerPoint.PpSlideShowType.ppShowTypeSpeaker;
                sst.Run();
于 2013-06-14T14:18:18.533 回答