代码之家  ›  专栏  ›  技术社区  ›  Iliya Markov

仅在PowerPoint幻灯片放映中的某些幻灯片上自动暂停播放声音

  •  0
  • Iliya Markov  · 技术社区  · 7 年前

    我有一个PowerPoint 2013幻灯片放映,自动推进幻灯片和背景音乐。有些幻灯片是视频,我希望音乐在这些幻灯片上暂停,然后自动恢复。我只能找到如何使音乐在一定数量的幻灯片后停止,但找不到有关暂停/恢复的任何信息。这是可以通过菜单实现的,还是只能通过VBA实现?

    谢谢。 伊利亚

    2 回复  |  直到 7 年前
        1
  •  1
  •   konahn    6 年前

    如果你没有找到任何解决方案, 您可以使用winmm的外部API函数“MCISendString”尝试一些VBA。dll。

    需要注意的一点是,“fileToPlay”字符串中不能有任何空格字符。 您可以使用另一个名为OnSlideShowPageChange的函数来自动播放和恢复音频播放。

    #If VBA7 Then
        Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias _
        "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
        lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
    #Else
        Declare Function mciSendString Lib "winmm.dll" Alias _
        "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
        lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
    
    #End If
    
    Sub OnSlideShowPageChange(SSW As SlideShowWindow)
    
        Dim fileToPlay As String
        Dim MCIAudio As Long
    
        fileToPlay = Chr(34) & ActivePresentation.Path & "\test.mp3" & Chr(34)
    
        Select Case SSW.View.CurrentShowPosition
            Case 1:
                'first, close the previous playing and open new and play
                MCIPlay = mciSendString("close MyAudio", Nothing, 0, 0)
                MCIAudio = mciSendString("open " & fileToPlay & " alias MyAudio", Nothing, 0, 0)
                MCIAudio = mciSendString("play MyAudio", Nothing, 0, 0)
            Case 2:
                MCIAudio = mciSendString("pause MyAudio", Nothing, 0, 0)
            Case 3:
                MCIAudio = mciSendString("resume MyAudio", Nothing, 0, 0)
            Case 4:
                MCIAudio = mciSendString("stop MyAudio", Nothing, 0, 0)
        End Select
    End Sub
    
    Sub OnSlideShowTerminate()
        Dim MCIAudio As Long
    
        MCIAudio = mciSendString("stop MyAudio", Nothing, 0, 0)
        MCIAudio = mciSendString("close MyAudio", Nothing, 0, 0)
    End Sub
    

    在本例中, 在幻灯片1中,开始播放。 在幻灯片2中,暂停播放。 在幻灯片3中,继续播放。 在幻灯片4中,停止播放。 幻灯片放映结束后,停止播放。

    如果是这样,只需在第一张幻灯片上插入任何Active-X控件, 这是一种已知的解决方法。)

    https://msdn.microsoft.com/en-us/library/ms710815.aspx

        2
  •  0
  •   Elias Wick    7 年前

    您可以查看此 Link 更多关于你问题的答案。

    你应该能够做到这一点,没有代码。功率点>过渡选项卡(>);声音:[停止上一个声音]。

    Explanation Image