Добавьте в с#
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?
с уважением