div.main {margin-left: 20pt; margin-right: 20pt} Программирование на 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
|