1

Тема: VBScript: воспроизведение аудио

Пример показывает возможность воспроизведения произвольных аудио-файлов в скриптах с использованием COM-объекта "WMPlayer.OCX" (Windows Media Player). Демонстрируется регулирование баланса и громкости, определение длины записи в секундах. Обратите внимание, что в целом объект обладает значительно большим функционалом (плейлисты, настройка частоты, настройка скорости проигрывания и т.п.), чем показано в этом примере.

Set WMPlayer = New WMPlayerClass

Dim FilePath

'/// Так же можно указать URl - ссылку на файл в интернете
FilePath = "C:\WINDOWS\Media\chimes.wav"

'/// Открываем ресурс
WMPlayer.OpenMedia FilePath

'/// Выводим длительность файла
msgbox "Длительность файла: " & WMPlayer.CurrentMedia.DurationString,vbInformation,"WMPlayerClass"

'/// проверка изменения громкости
msgbox "Сейчас будет произведена проверка изменения громкости звука. Эффект эхо. 100% 50% 10%"
WMPlayer.Settings.Volume = 100
WMPlayer.Play
WMPlayer.Settings.Volume = 50
WMPlayer.Play
WMPlayer.Settings.Volume = 10
WMPlayer.Play

'/// проверка изменения баланса
MsgBox "Сейчас будет произведена проверка баланса. (левого и правого динамика)",vbInformation,"WMPlayerClass"
WMPlayer.Settings.Volume = 100
WMPlayer.Settings.Balance = -100
WMPlayer.Play
WMPlayer.Settings.Balance = 100
WMPlayer.Play

MsgBox "Проверка завершена.",vbInformation,"WMPlayerClass"

'/// Класс проигрывателя
Class WMPlayerClass
    '/// Переменная для хранения ссылки на объект плеера
    Dim WMPlayer
    Private Sub Class_Initialize()
        Set WMPlayer = CreateObject("WMPlayer.OCX")
        WMPlayer.settings.autoStart = False
        WMPlayer.settings.enableErrorDialogs = False
    End Sub

    '/// Свойство возвращает ссылку на объект настроек плеера
    Public Property Get Settings
        Set Settings = WMPlayer.Settings
    End Property

    '/// Метод подключения к ресурсу
    Function OpenMedia(URL)
        '/// Несколько из констант состояния открытия
        Const wmposMediaLoading = 11
        Const wmposMediaLocating = 9
        Const wmposPlaylistOpenNoMedia = 6
        Const wmposMediaOpen = 13
        Const wmposPlaylistOpening = 5
        Const wmposOpeningUnknownURL = 21
        Const wmposUndefined = 0

        '/// Для корректного получения данных о содержимом, нужно открыть ресурс.
        WMPlayer.URL = URL
        '/// Убираем звук        
        WMPlayer.settings.mute=true
        '/// Запускаем на проигрывание
        WMPlayer.controls.Play
        '/// Ждём состояния открытия файла. Если файл открыть не удалось вернётся wmposPlaylistOpenNoMedia
        Do
            WScript.Sleep 10
        Loop Until WMPlayer.OpenState = wmposMediaOpen or WMPlayer.OpenState=wmposPlaylistOpenNoMedia
        '/// Останавливаем проигрывание
        WMPlayer.controls.Stop
        '/// Возвращаем звук
        WMPlayer.settings.mute=false
    End Function

    '/// Свойство возвращает ссылку на параметры открытого файла
    Public Property Get CurrentMedia
        Set CurrentMedia = WMPlayer.CurrentMedia
    End Property

    '/// Метод запуска проигрывания
    Function Play()
        WMPlayer.Controls.Play
        '/// Ожидаем окончания проигрывания (ждём пока плеер не перейдёт в состояние остановки)
        Do
            WScript.Sleep 100
        Loop Until WMPlayer.playState = 1
    End Function
End Class

Автор примера - Xameleon.

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

2

Re: VBScript: воспроизведение аудио

Пример показывает возможность воспроизведения произвольных аудио-файлов в скриптах с использованием ActiveX Windows Media Player так, как он используется на HTML-страницах. Пример интересен использованием объекта "htmlfile", который может "эмулировать" HTML-страницу в скриптах, не имеющих графического интерфейса.

'/// Создаём класс проигрывателя
Set WMP = New WindowsMediaPlayerClass

'/// Открываем и проигрываем файлы
WMP.Play "C:\Windows\media\chimes.wav"
WMP.Play "C:\Windows\media\ringin.wav"
WMP.Play "C:\Windows\media\ding.wav"

MsgBox "Playing Complete.",vbInformation,"Windows Media Player"

'/// Класс Windows Media Player-a 
Class WindowsMediaPlayerClass
    '/// Т.к создать Windows Media Player имеет только CLASSID, то создадим его в контейнере HTMLDocument
    Private Document,WMP
    
    '/// Событие инициализации класса
    Private Sub Class_Initialize
        '/// Создаём HTMLDocument
        Set Document = Wscript.CreateObject("htmlfile")
        '/// Выполняем методы Open и Close, чтобы создалось Body
        Document.open
        Document.close
        '/// Создаём с помошью документа объект проигрывателя
        Set WMP = Document.createElement("OBJECT")
        '/// Добавляем его в документ
        Document.body.appendChild WMP
        '/// Указываем его классид ( Кстати таким способом можно создавать и другие объекты имеющие только CLASSID)
        '/// Хотя наверняка есть и более удобные способы
        WMP.classid = "CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95"
        'WMP.AutoRewind = True
        'WMP.AutoStart = True
    End Sub

    '/// Метод запуска проигрывания файла
    Public Sub Play(FileName)
        '/// Если имя файла не указано, то выходим из процедуры
        if FileName = "" Then Exit Sub
        '/// Передаём имя файла для проигрывания
        WMP.FileName = FileName
        '/// Запуск проигрывания
        WMP.Play
        '/// Запускаем цикл и ждём пока проигрывание остановится
        Do
            '/// Притормаживаем выполнение, чтобы цикл не отнимал 100% процессорного времени
            Wscript.Sleep 100
        Loop Until WMP.PlayState = 0
    End Sub
End Class

Автор примера - Xameleon.

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

3

Re: VBScript: воспроизведение аудио

Пример воспроизведения звука с помощью Internet Explorer, на JavaScript. Удобно для HTA-приложений.

<html>
<head>
<title>Sound</title>
<script language="JScript">
function playsound() {
  document.all.sound.src = "C:\\WINDOWS\\Media\\chimes.wav"
}
</script>
<bgsound id=sound>
</head>
<body>
<script language="JScript">

playsound();

</script>
</body>
</html>

Автор примера - Санёк.

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

4

Re: VBScript: воспроизведение аудио

Простое проигрывание WAV с использованием объекта JSSys3.dll:

Set oSys = CreateObject("JSSys3.Ops")
oSys.PlayWav "C:\Windows\Media\Chimes.wav"

Похожий метод предоставляет бесплатный компонент JSForm.dll.

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

5

Re: VBScript: воспроизведение аудио

И еще один пример воспроизведения wav файлов и голоса через SAPI:

Set oVoice = CreateObject("SAPI.SpVoice")
set oSpFileStream = CreateObject("SAPI.SpFileStream")
oSpFileStream.Open "c:\Windows\Media\tada.wav"
oVoice.SpeakStream oSpFileStream
oSpFileStream.Close
oVoice.Speak "Finished Playing wave file."

6

Re: VBScript: воспроизведение аудио

И через командную строку проигрывание wav-файлов

sndrec32 /embedding /play /close "C:\Windows\Media\Notify.wav"