簡體   English   中英

當我在 c#.net 中的表單上顯示 Powerpoint 時出現問題

[英]Issue when I display Powerpoint on my form in c#.net

Actullay 我希望powerpoint 必須打開並顯示在我的表單上。我不想在microsoft 中打開powerpoint ......所以我做了我想做的,意味着powerpoint 正在我自己的表單中打開。 但問題是,在運行時在表單上打開 powerpoint,同時打開另一個 powerpoint 實例,我不想要另一個實例。 那么如何刪除powerpoint的另一個實例呢? 請檢查代碼。

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();
    }
}

嘗試設置application.Visible = false

只需替換以下行

演示文稿 = application.Presentations.Open(FileName, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);

使用以下代碼行: presentation = application.Presentations.Open(FileName, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM