20 ноября 2019 года    
Среда | 19:21    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум



Мы изготовляем деревянные дома в России.




Разделы / Программирование / Basic

Программирование на VBA в MSOffice.


Программирование на 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 

 Программирование на VBA в MSOffice.
Лента новостей


2006 (c) Copyright Hardline.ru