当我在c#.net中显示Powerpoint时的问题

本文关键字:Powerpoint 问题 显示 net | 更新日期: 2023-09-27 18:11:35

实际上我想要powerpoint必须打开并显示在我的表单上。我不想在微软里打开ppt…所以我已经完成了我想要的,这意味着幻灯片在我自己的表单中打开了。但问题是,在运行时powerpoint在表单上打开,同时另一个powerpoint实例正在打开,我不想要另一个。那么如何删除另一个ppt实例呢?请检查代码

using System.Runtime.InteropServices;
using ppt = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
  public partial class Form2 : Form
  {
  [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
    static extern IntPtr FindWindow(IntPtr ZeroOnly, string lpWindowName);
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
    [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern bool SetWindowText(IntPtr hwnd, String lpString);
    ppt.Presentation presentation;
    Microsoft.Office.Interop.PowerPoint.SlideShowView oSlideShowView;
    bool flag = false;
    public Form2()
    {
        InitializeComponent();
    }

    public void open(string FileName)
    {
        try
        {
            ppt.Application application;
            // For Display in Panel
            IntPtr screenClasshWnd = (IntPtr)0;
            IntPtr x = (IntPtr)0;
            application = new ppt.Application();
            presentation = application.Presentations.Open(FileName, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
            panel1.Controls.Add(application as Control);
            ppt.SlideShowSettings sst1 = presentation.SlideShowSettings;
            sst1.LoopUntilStopped = Microsoft.Office.Core.MsoTriState.msoTrue;
            ppt.Slides objSlides = presentation.Slides;
            sst1.LoopUntilStopped = MsoTriState.msoTrue;
            sst1.StartingSlide = 1;
            sst1.EndingSlide = objSlides.Count;
            panel1.Dock = DockStyle.Fill;
            sst1.ShowType = ppt.PpSlideShowType.ppShowTypeKiosk;
            ppt.SlideShowWindow sw = sst1.Run();
            //sw=Objssws
            oSlideShowView = presentation.SlideShowWindow.View;
            IntPtr pptptr = (IntPtr)sw.HWND;
            SetParent(pptptr, panel1.Handle);

        }
        catch (Exception)
        {
            throw;
        }
    }
    private void Form2_Load(object sender, EventArgs e)
    {
         OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
       // openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
        if (openFileDialog.ShowDialog(this) == DialogResult.OK)
        //string FileName = "C:''Task''Welcome to PowerPoint.ppt";
        open(openFileDialog.FileName);
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
    }
    private void button1_Click(object sender, EventArgs e)
    {
        oSlideShowView.Next();
    }
}

当我在c#.net中显示Powerpoint时的问题

尝试设置application.Visible = false

只需替换以下行

presentation = application.Presentations。Open (FileName, MsoTriState。msoTrue MsoTriState。msoTrue MsoTriState.msoFalse);

,代码行如下:presentation = application.Presentations。Open (FileName, MsoTriState。msoFalse MsoTriState。msoFalse MsoTriState.msoFalse);