Воспроизвести звуковой файл из VBScript, когда появится msgbox

Я пытаюсь воспроизвести звуковой файл из VBScript, когда появляется определенное окно msgbox. Единственная проблема заключается в том, что я буду отправлять это куда-то еще, и у человека, который его получит, не будет того же пути, что и у аудиофайла, который я хочу воспроизвести. Я думал о том, чтобы поместить все звуковые файлы, которые я хочу использовать, в ту же папку, что и сценарий, а затем отправить эту папку, но я не знаю, как убедиться, что звуковой файл будет воспроизводиться.

Поэтому я думаю, что самый большой вопрос заключается в том, как обобщить путь, чтобы любой мог услышать файл из скрипта с любой машины.

Вот мой код:

    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

person Jared    schedule 21.04.2015    source источник


Ответы (2)


Предположим, что у вас есть папка с именем 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
'**********************************************************

Я надеюсь, что этот ответ поможет вам завершить ваш основной скрипт;)

person Hackoo    schedule 22.04.2015
comment
Это прекрасно работает! Есть ли способ сделать задержку/сон короче? Я пытался возиться с обеими функциями сна, но это дало мне некоторые шаткие результаты (воспроизведение звука после того, как я нажал «ОК» в окне msgbox). Как и сейчас, звук воспроизводится, затем проходит несколько секунд, и появляется окно msgbox. Я хотел бы, чтобы звук воспроизводился как можно ближе к появлению msgbox. - person Jared; 23.04.2015
comment
@Jared, в этом случае вы должны проголосовать за этот ответ и принять его. Для получения дополнительной информации прочитайте это ==› stackoverflow.com/tour - person Hackoo; 24.04.2015

Вы имели в виду что-то вроде этого:

введите здесь описание изображения

Описание: этот Vbscript "PlayListSongs.vbs" сканирует папку и ее вложенные папки в поисках песен и создает список воспроизведения в текстовом файле для воспроизведения в фоновом режиме.

Обновление: я добавляю еще один vbscript, чтобы остановить и убить процесс "wscript.exe", чтобы остановить воспроизведение музыки в фоновом режиме.

Я добавляю еще один vbscript для воспроизведения плейлиста с проигрывателем Windows Media на переднем плане.

в сумме вы можете найти в zip 3 vbscript

1- Чтобы воспроизвести плейлист в фоновом режиме.

2- Остановить музыку.

3- Чтобы воспроизвести музыку с помощью Проигрывателя Windows Media на переднем плане.

Вы можете скачать его отсюда и протестировать< /сильный>

person Hackoo    schedule 21.04.2015
comment
Не совсем то, что я ищу. Я просто хочу, чтобы звук воспроизводился всякий раз, когда появляется окно msgbox (т.е. всякий раз, когда intAnswer3 = vbyes) - person Jared; 22.04.2015