У меня есть приложение, которое встраивает приложение PowerPoint в панель и автоматически запускает слайд-шоу. Это хорошо работает, даже анимации на PowerPoint. Тем не менее, когда форма теряет фокус, слайд-шоу останавливается и продолжается до тех пор, пока форма не имеет заднего фокуса.
Это проблема, потому что презентация должна выполняться сзади, пока я занимаюсь другими вещами на моем ПК. Я думал, что это может быть решено с помощью функции в user32.dll, чтобы вызвать форму, которую он имеет фокус или что-то в этом роде. Но до сих пор мне не удавалось заставить это работать хорошо. Есть идеи, как решить эту проблему?
Код, который я использую для встраивания powerpoint:
Dim ofd As New OpenFileDialog
If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim pres As PowerPoint.Presentation
Dim objslides As PowerPoint.Slides
app = New PowerPoint.Application
pres = app.Presentations.Open(ofd.FileName, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoTrue)
' app.WindowState = PowerPoint.PpWindowState.ppWindowMinimized
objslides = pres.Slides
With pres.SlideShowSettings
.LoopUntilStopped = MsoTriState.msoTrue
.StartingSlide = 1
.EndingSlide = objslides.Count
.ShowType = PowerPoint.PpSlideShowType.ppShowTypeKiosk
.AdvanceMode = PowerPoint.PpSlideShowAdvanceMode.ppSlideShowUseSlideTimings
.ShowPresenterView = MsoTriState.msoFalse
.ShowWithAnimation = MsoTriState.msoTrue
.ShowWithNarration = MsoTriState.msoFalse
End With
sw = pres.SlideShowSettings.Run()
Dim screenClasshWnd = FindWindow("screenClass", 0)
SetParent(screenClasshWnd, Panel1.Handle)
SetWindowPos(sw.HWND, 1, 0, 0, Panel1.Width, Panel1.Height, 0)
swview = sw.View