Rakesh Bairi Ответов: 1

Добавьте в с#


using System.Diagnostics;
using System.Runtime.InteropServices;
using ppt = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;


   [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 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);
             
                ppt.SlideShowSettings sst1 = presentation.SlideShowSettings;

                sst1.LoopUntilStopped = Microsoft.Office.Core.MsoTriState.msoCTrue;

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

                oSlideShowView = presentation.SlideShowWindow.View;

                IntPtr pptptr = (IntPtr)sw.HWND;

                SetParent(pptptr, panel1.Handle);


            }
            catch (Exception)
            {

                throw;
            }


        }
        private void Form3_Load(object sender, EventArgs e)
        {
            string FileName = "D:\\test.pptx";
            open(FileName);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            oSlideShowView.Next();
        }


Здесь я пытаюсь воспроизвести Power Point в оконной панели.
его воспроизведение файла power point в панели, но проблема в том, что сначала он воспроизводит полный экран в течение доли секунды, а затем продолжает играть в панели.
но мне нужно играть прямо на панели.
Пожалуйста, помогите, если кто-нибудь знает.

romanpetrov

У меня точно такая же проблема...

romanpetrov

Проведя некоторые исследования, я обнаружил, что эта проблема не появляется в PowerPoint 2013, только в предыдущих версиях PowerPoint.

Rakesh Bairi

В моем случае я разрабатываю приложение Windows,установленное на стороне клиента, код должен быть независим от Microsoft office,

romanpetrov

На самом деле, ваш код зависит от версии PowerPoint. В PowerPoint 2010 году, после презентации звонок.SlideShowWindow ео = sst1.Выполнить(); PowerPoint всегда показывает слайд в полноэкранном режиме. Вы можете проверить это с помощью презентации, имеющей переход на первом слайде. В PowerPoint 2013 эта проблема не возникает.

Rakesh Bairi

Спасибо за ответ у меня есть одно сомнение, должен ли я использовать сборку power point 2013 в своем коде ?потому что в моей машине разработки у меня есть office 2010

romanpetrov

Если вы установите Office 2013, проблема должна исчезнуть. Но у меня до сих пор нет никакого решения для PowerPoint 2010..

Rakesh Bairi

спасибо, я попробую с office 2013.

Rakesh Bairi

Пожалуйста помогите мне не получить решение до сих пор :(

Rakesh Bairi

спасибо @romanpetrov наконец-то получил решение

GeorgeHLord

Привет , я столкнулся с той же проблемой. Но я должен заставить его работать не только для PowerPoint 2013.
@rakeshbairi вы нашли другой способ встроить ppt в WPF?

с уважением

1 Ответов

Рейтинг:
0

ravinimje

включен таймер тиков правда