仅在 PowerPoint 幻灯片放映中的某些幻灯片上自动暂停播放声音
Automatically pause a playing sound only on certain slides in a PowerPoint slide show
我有一个 PowerPoint 2013 幻灯片放映,其中自动播放幻灯片和背景音乐。有些幻灯片是视频,我希望音乐在此类幻灯片处暂停并在之后自动恢复。我只能找到如何让音乐在一定数量的幻灯片后停止,但找不到任何关于 pause/resume 的信息。这可以通过菜单来完成,还是只能使用 VBA?
非常感谢。
伊利亚
您可以查看此 Link 以获得您问题的更多答案。
你应该能够在没有代码的情况下做到这一点。 Power Point > 过渡选项卡 > 声音:[停止上一个声音]。
如果您还没有找到任何解决方案,
你可以尝试一些 VBA,使用 "MCISendString",来自 winmm.dll.
的外部 API 函数
您应该注意的一件事是 'fileToPlay' 字符串中不能有任何 space 字符。
您可以使用另一个名为 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 上,停止播放。
当幻灯片放映结束时,停止播放。
(要知道,OnSlideShowPageChange 有时会启动失败。
如果那样,只需在第一张幻灯片上插入任何 Active-X 控件,
这是一个已知的解决方法。)
其他 MCISendString 命令可以在这里找到:
https://msdn.microsoft.com/en-us/library/ms710815.aspx
我有一个 PowerPoint 2013 幻灯片放映,其中自动播放幻灯片和背景音乐。有些幻灯片是视频,我希望音乐在此类幻灯片处暂停并在之后自动恢复。我只能找到如何让音乐在一定数量的幻灯片后停止,但找不到任何关于 pause/resume 的信息。这可以通过菜单来完成,还是只能使用 VBA?
非常感谢。 伊利亚
您可以查看此 Link 以获得您问题的更多答案。
你应该能够在没有代码的情况下做到这一点。 Power Point > 过渡选项卡 > 声音:[停止上一个声音]。
如果您还没有找到任何解决方案, 你可以尝试一些 VBA,使用 "MCISendString",来自 winmm.dll.
的外部 API 函数您应该注意的一件事是 'fileToPlay' 字符串中不能有任何 space 字符。 您可以使用另一个名为 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 上,停止播放。 当幻灯片放映结束时,停止播放。
(要知道,OnSlideShowPageChange 有时会启动失败。 如果那样,只需在第一张幻灯片上插入任何 Active-X 控件, 这是一个已知的解决方法。)
其他 MCISendString 命令可以在这里找到: https://msdn.microsoft.com/en-us/library/ms710815.aspx