出现 msgbox 时从 VBScript 中播放声音文件

Play sound file from within VBScript when msgbox appears

当某个消息框出现时,我正在尝试从 VBScript 中播放声音文件。唯一的问题是我将把它发送到别处,而接收它的人将不会与我要播放的音频文件具有相同的路径名。我正在考虑将所有我想使用的声音文件放在与脚本相同的文件夹中,然后发送该文件夹,但我不知道如何确保声音文件能够播放。

所以我想最大的问题是如何概括路径名,以便任何人都可以从任何机器的脚本中听到文件。

到目前为止,这是我的代码:

    if intAnswer3 = vbyes then
        strSoundFile = "C:\pathname"
        Set objShell = CreateObject("Wscript.Shell")
        strCommand = "sndrec32 /play /close " & chr(34) & strSoundFile & chr(34)
        objShell.Run strCommand, 0, True

你的意思是这样的吗:

描述: 此 Vbscript "PlayListSongs.vbs" 扫描文件夹及其子文件夹中的歌曲,并在文本文件中创建播放列表以便在后台播放。

更新: 我添加了另一个 vbscript 来停止并终止 "wscript.exe" 进程以停止后台播放音乐.

我添加了另一个 vbscript 以在前台使用 Windows Media Player 播放播放列表。

总之你可以找到zip 3 vbscript

1- 在后台播放播放列表

2- 停止音乐。

3- 在前台使用 Windows 媒体播放器播放音乐。

这样就可以下载了from here and test it

假设您的脚本有一个名为 Music 的文件夹,因此您可以使用这样的相对路径 ./Music/Matrix.mp3

所以你可以这样试一试:

Option Explicit
Dim Msg,Question,PathSound
Msg = "Did you want to hear some music ?"
PathSound = "./Music/Matrix.mp3" 'Relative Path
Question = MsgBox(Msg,VbQuestion+VbYesNo,Msg)
If Question = VbYes Then
    Call Play(PathSound)
Else
    Wscript.Quit()
End If
'**********************************************************
Sub Play(SoundFile)
Dim Sound
Set Sound = CreateObject("WMPlayer.OCX")
Sound.URL = SoundFile
Sound.settings.volume = 100
Sound.Controls.play
do while Sound.currentmedia.duration = 0
    wscript.sleep 100
loop
wscript.sleep(int(Sound.currentmedia.duration)+1)*1000
End Sub
'**********************************************************

如果你喜欢在线播放音乐,那么你可以这样做:

Option Explicit
Dim Msg,Question,PathSound
Msg = "Did you want to hear some music ?"
PathSound = "http://hackoo.alwaysdata.net/Matrix.mp3"
Question = MsgBox(Msg,VbQuestion+VbYesNo,Msg)
If Question = VbYes Then
    Call Play(PathSound)
Else
    Wscript.Quit()
End If
'**********************************************************
Sub Play(SoundFile)
Dim Sound
Set Sound = CreateObject("WMPlayer.OCX")
Sound.URL = SoundFile
Sound.settings.volume = 100
Sound.Controls.play
do while Sound.currentmedia.duration = 0
    wscript.sleep 100
loop
wscript.sleep(int(Sound.currentmedia.duration)+1)*1000
End Sub
'**********************************************************

希望这个回答能帮助您完成主脚本;)