VB.net встроенное слайд-шоу PowerPoint не продолжается - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть приложение, которое встраивает приложение 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

1 Ответ

0 голосов
/ 20 ноября 2018

Наконец я нашел обходной путь. После некоторых исследований PowerPoint я обнаружил, что слайд-шоу, открытое в PowerPoint, также «зависает», когда приложение теряет фокус. Итак, чтобы решить эту проблему, я открыл слайд-шоу в отдельном окне:

With pres.SlideShowSettings
            .LoopUntilStopped = MsoTriState.msoTrue
            .StartingSlide = 1
            .EndingSlide = objslides.Count
            .ShowType = PowerPoint.PpSlideShowType.ppShowTypeWindow
            .AdvanceMode = PowerPoint.PpSlideShowAdvanceMode.ppSlideShowUseSlideTimings
            .ShowPresenterView = MsoTriState.msoFalse
            .ShowWithAnimation = MsoTriState.msoTrue
            .ShowWithNarration = MsoTriState.msoFalse
        End With

Это обеспечивает показ слайдов в форме с границами в стиле Windows 7. С помощью SetWindowPosition в user32.dll размер и расположение этого окна можно изменить, чтобы синяя рамка больше не видна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...