Программирование на VBA в MSOffice. Проигрыватель MIDI и Wave файлов. Microsoft Multimedia Control
Программирование на VBA в MSOffice.
Проигрыватель MIDI и Wave файлов. Microsoft Multimedia Control Работа с интерфейсом MCI почти одинакова для различных видов мультимедиа — в этот раз будем программировать воспроизведение звуков и музыки по аналогии с выводом цифрового видео. Для этого желательно посмотреть оригинал предыдущей статьи "...Проигрыватель видео файлов..." (КГ № 4, 29.01.2002) и приведенные там исходные тексты.
Принципиальных различий нет. Надо лишь убрать за ненадобностью описания функций WinAPI — GetActiveWindow и GetClientRect, а также блоки исходного текста, в котором они используются, т.к. для вывода звука указывать окно просто не нужно.
А при открытии устройства MCI нужно указать "sequencer" в типе устройства вместо "avivideo" для проигрывания MIDI-файлов. Соответственно для WAV-файлов нужно указать "waveaudio".
Рассмотрим эти моменты подробнее для варианта MIDI-проигрывателя.
Создайте объект MidiPlayer и скопируйте туда исходный текст объекта VideoPlayer. Далее будем лишь вводить новые строки и выбрасывать лишние.
Для описания основных свойств добавьте строки:
Private MIDIFile As String
Private hMIDI As Long
С ними будут работать все методы этого объекта. С помощью команды VBA-редактора "Edit/ Replace" замените ими все встречающиеся упоминания свойств соответственно AVIFile и hAVI. Также во всех строках вывода сообщений об ошибке замените VideoPlayer на MidiPlayer. Теперь займемся конкретно методом Play. В описании назовите параметр — имя файла — как strMIDIFileName. Удалите описания следующих переменных: mow, morSource, morDest, mhWnd и rc.
В блоке текста открытия устройства укажите:
With mci
.strDeviceType = "sequencer"
.strElementName = strMIDIFileName
End With
Далее в тексте метода удалите блок, начиная от комментария "Установка активного окна" до комментария "Воспроизведение".
Теперь объект готов. Осталось подредактировать форму.
В исходник формы добавьте строку описания переменной объекта MidiPlayer:
Dim Melody As MidiPlayer
Далее в текстах всех методов надо заменить AVIPlayer на Melody. Также следует изменить строку вызова диалога открытия файлов:
TextBox1.Value = dlgFiler.OpenFile("MIDI-Файлы" & vbNullChar & "*.mid; *.midi",,, "Выбирайте мелодию")
Теперь сохраните таблицу Excel в новом файле, запустите форму и наслаждайтесь звучанием своего творения.
Полностью аналогично можно скопировать текст MIDI-проигрывателя и переделать под WAVE-проигрыватель, заменив имена свойств объекта (для наглядности) и тип устройства:
.strDeviceType = "waveaudio"
По сравнению с проигрыванием WAVE-файлов через функцию PlaySound (см. статью "...Проигрыватель звуковых файлов..." КГ №3 от 22.01.02) трудозатрат хоть и больше, но результат предпочтительнее, т. к. программа не "зависает" на время звучания.
Конечно, можно предположить, что уже существуют реализации объектов для упрощения доступа к MCI. И было бы удивительно, если бы компания Microsoft не создала бы такой объект для использования в своих приложениях.
Все эти способы работы с мультимедиа в полном объеме реализованы в ActiveX-объекте Microsoft Multimedia Control. Его можно использовать и в приложениях VBA для воспроизведения аудио- и видеофайлов. Делается все очень просто:
a) Добавьте в форму элемент управления MMC (под именем, например, MMC1).
b) В программу, где надо чего-нибудь воспроизводить, добавьте следующие строки:
MMC1.FileName= "Имя_медиафайла"
MMC1.Command= "OPEN"
MMC1.Command= "PLAY"
Подробнее о нем читайте в MSDN — справочнике Visual Studio.
Аналогично можно использовать и другой ActiveX-объект — Windows Media Player. Тогда код активации будет выглядеть следующим образом:
MediaPlayer1.Filename = TextBox1.Value
MediaPlayer1.Play
Вы обязательно спросите: "Зачем тогда самостоятельно программировать, если можно взять готовый объект?". Отвечаю: практически все компоненты включены в Windows 98/2000, а также в Internet Explorer 4.0 и выше, хотя MCI-интерфейс работает еще на Win95. Бывает, что на машине установлены Windows 95 OSR2 и Microsoft Office 97 и никаких дополнений. Тогда все Ваши программы, использующие MCI напрямую будут работать и радовать юзеров, иначе придется вместе с новым документом Word или книгой Excel таскать впридачу и дистрибутивы компонентов.
Смотрите сами и всегда поступайте так, как Вам удобнее. Ведь данная статья всего лишь приоткрывает завесу мультимедиа-внутренностей Windows.
Надеюсь в недалеком будущем найти время и написать пару статей по ActiveX-компонентам, которые было бы интересно применять в приложениях на VBA. Пример таблицы Excel с описанными программами на VBA Вы сможете найти на http://brestmedia.f2s.com/ в разделе "Скачать".
to be continued...
Виктор Маковчик, makovchik@tut.by
Проигрыватель MIDI и Wave файлов. Microsoft Multimedia Control Работа с интерфейсом MCI почти одинакова для различных видов мультимедиа — в этот раз будем программировать воспроизведение звуков и музыки по аналогии с выводом цифрового видео. Для этого желательно посмотреть оригинал предыдущей статьи "...Проигрыватель видео файлов..." (КГ № 4, 29.01.2002) и приведенные там исходные тексты.
Принципиальных различий нет. Надо лишь убрать за ненадобностью описания функций WinAPI — GetActiveWindow и GetClientRect, а также блоки исходного текста, в котором они используются, т.к. для вывода звука указывать окно просто не нужно.
А при открытии устройства MCI нужно указать "sequencer" в типе устройства вместо "avivideo" для проигрывания MIDI-файлов. Соответственно для WAV-файлов нужно указать "waveaudio".
Рассмотрим эти моменты подробнее для варианта MIDI-проигрывателя.
Создайте объект MidiPlayer и скопируйте туда исходный текст объекта VideoPlayer. Далее будем лишь вводить новые строки и выбрасывать лишние.
Для описания основных свойств добавьте строки:
Private MIDIFile As String
Private hMIDI As Long
С ними будут работать все методы этого объекта. С помощью команды VBA-редактора "Edit/ Replace" замените ими все встречающиеся упоминания свойств соответственно AVIFile и hAVI. Также во всех строках вывода сообщений об ошибке замените VideoPlayer на MidiPlayer. Теперь займемся конкретно методом Play. В описании назовите параметр — имя файла — как strMIDIFileName. Удалите описания следующих переменных: mow, morSource, morDest, mhWnd и rc.
В блоке текста открытия устройства укажите:
With mci
.strDeviceType = "sequencer"
.strElementName = strMIDIFileName
End With
Далее в тексте метода удалите блок, начиная от комментария "Установка активного окна" до комментария "Воспроизведение".
Теперь объект готов. Осталось подредактировать форму.
В исходник формы добавьте строку описания переменной объекта MidiPlayer:
Dim Melody As MidiPlayer
Далее в текстах всех методов надо заменить AVIPlayer на Melody. Также следует изменить строку вызова диалога открытия файлов:
TextBox1.Value = dlgFiler.OpenFile("MIDI-Файлы" & vbNullChar & "*.mid; *.midi",,, "Выбирайте мелодию")
Теперь сохраните таблицу Excel в новом файле, запустите форму и наслаждайтесь звучанием своего творения.
Полностью аналогично можно скопировать текст MIDI-проигрывателя и переделать под WAVE-проигрыватель, заменив имена свойств объекта (для наглядности) и тип устройства:
.strDeviceType = "waveaudio"
По сравнению с проигрыванием WAVE-файлов через функцию PlaySound (см. статью "...Проигрыватель звуковых файлов..." КГ №3 от 22.01.02) трудозатрат хоть и больше, но результат предпочтительнее, т. к. программа не "зависает" на время звучания.
Конечно, можно предположить, что уже существуют реализации объектов для упрощения доступа к MCI. И было бы удивительно, если бы компания Microsoft не создала бы такой объект для использования в своих приложениях.
Все эти способы работы с мультимедиа в полном объеме реализованы в ActiveX-объекте Microsoft Multimedia Control. Его можно использовать и в приложениях VBA для воспроизведения аудио- и видеофайлов. Делается все очень просто:
a) Добавьте в форму элемент управления MMC (под именем, например, MMC1).
b) В программу, где надо чего-нибудь воспроизводить, добавьте следующие строки:
MMC1.FileName= "Имя_медиафайла"
MMC1.Command= "OPEN"
MMC1.Command= "PLAY"
Подробнее о нем читайте в MSDN — справочнике Visual Studio.
Аналогично можно использовать и другой ActiveX-объект — Windows Media Player. Тогда код активации будет выглядеть следующим образом:
MediaPlayer1.Filename = TextBox1.Value
MediaPlayer1.Play
Вы обязательно спросите: "Зачем тогда самостоятельно программировать, если можно взять готовый объект?". Отвечаю: практически все компоненты включены в Windows 98/2000, а также в Internet Explorer 4.0 и выше, хотя MCI-интерфейс работает еще на Win95. Бывает, что на машине установлены Windows 95 OSR2 и Microsoft Office 97 и никаких дополнений. Тогда все Ваши программы, использующие MCI напрямую будут работать и радовать юзеров, иначе придется вместе с новым документом Word или книгой Excel таскать впридачу и дистрибутивы компонентов.
Смотрите сами и всегда поступайте так, как Вам удобнее. Ведь данная статья всего лишь приоткрывает завесу мультимедиа-внутренностей Windows.
Надеюсь в недалеком будущем найти время и написать пару статей по ActiveX-компонентам, которые было бы интересно применять в приложениях на VBA. Пример таблицы Excel с описанными программами на VBA Вы сможете найти на http://brestmedia.f2s.com/ в разделе "Скачать".
to be continued...
Виктор Маковчик, makovchik@tut.by
Компьютерная газета. Статья была опубликована в номере 05 за 2002 год в рубрике программирование :: разное