2015-04-21 57 views
2

我試圖在某個msgbox出現時從VBScript中播放聲音文件。唯一的問題是,我將在其他地方發送此消息,並且接收消息的人將不具有與我想播放的音頻文件相同的路徑名。我正在考慮將所有想要使用的聲音文件放在與腳本相同的文件夾中,然後發送該文件夾,但我不知道如何確保聲音文件可以播放。當msgbox出現時,從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 

回答

3

假設你有一個名爲音樂你的腳本中,這樣你就可以使用相對路徑是這樣./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 
'********************************************************** 

我希望這個回答能幫助你完成你的主腳本;)

+0

這很好用!有什麼辦法可以讓延遲/睡眠時間縮短嗎?我嘗試了兩種睡眠功能,但它給了我一些不可思議的結果(在單擊msgbox上單擊確定後播放聲音)。現在聲音正在播放,然後幾秒鐘後msgbox出現。我希望聲音儘可能接近msgbox播放。 – Jared

+0

@Jared在這種情況下,你應該upvote這個答案並接受它。 欲瞭解更多信息,請閱讀此==> http://stackoverflow.com/tour – Hackoo

0

難道你的意思是這樣的:

enter image description here

說明: 這VBSCRIPT 「PlayListSongs.vbs」掃描成一個文件夾及其歌曲子文件夾,並在文本文件中創建播放列表以便在後臺播放。

更新:我添加其他的VBScript爲了停止音樂在後臺播放,停止和殺死「WScript.exe的」過程。

我添加了另一個vbscript,在前臺播放帶有Windows Media Player的播放列表。

總之,你可以發現到拉鍊的VBScript

1要在後臺播放的播放列表

2-停止音樂。

3-在前臺播放與Windows Media Player音樂。

所以,你可以下載它from here and test it

+0

不正是我要找的。我只是想在彈出的msgbox時播放聲音(即每當intAnswer3 = vbyes時) – Jared