Програмування на VBA в Microsoft Office.
Програвач звукових файлів
Тут ми розглянемо найпростіший приклад застосування мультимедіа в додатках на Visual Basic for Applications - програвання WAV-файлів. Толковое озвучування подій в прикладній програмі завжди привертає увагу користувачів і підвищує їх інтерес до роботи з цією програмою. Залишається дізнатися, як це зробити.
Тепер у вікні вихідного тексту програмуватимемо.
Просте відтворення звуку здійснюється функцією WinAPI PlaySound. Її 32-розрядної версії в Win32API іменується PlaySoundA. Вона може відтворювати WAV-файли, всі зареєстровані системні події і ресурси з EXE і DLL файлів. Опис її виглядає наступним чином:
Private Declare Function playSound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszSoundName As String, _
ByVal hMod As Long, ByVal uFlags As Long) As Long
Параметри: lpszSoundName - ім'я WAV-файлу, системного події або ресурсу, які треба відтворити, hMod - джерело відтворення. Якщо джерело - файл або системна подія, то hMod = 0, а якщо джерело - ресурс з EXE або DLL файлу, то hMod повинен містити посилання на завантажений в пам'ять ресурс. uFlags - параметри відтворення.
Якщо треба відтворити файл, то необхідно встановлювати прапор SND_FILENAME. Якщо системна подія, то - SND_ALIAS. Якщо вказану подію або файл не існують, то функція програє звук, відповідний системну помилку.
Додаткові прапори позначають: SND_SYNC - синхронне відтворення (додаток очікує завершення програвання звуку і тільки потім продовжує роботу), SND_ASYNC - асинхронне відтворення (додаток не чекає завершення програвання звуку, а паралельно продовжує роботу), SND_NODEFAULT - в разі помилки (файл не знайдено) НЕ програється стандартний звук, SND_NOWAIT - якщо драйвер звукової карти зайнятий, не чекати звільнення.
Опис інших властивостей і методів класу.
'Зберігає ім'я останнього програного файлу
Private PlayFileName As String
'Зберігає ім'я останнього програного події
Private PlaySysMsgAlias As String
'Зупинити поточний програвання звуку
Public Function PlayStop () As Boolean
Call playSound ( "", 0, SND_NODEFAULT)
'Віртуальне властивість - при присвоєнні
'Йому імені WAV-файлу програється звук
Property Let PlayFile (ByVal strWAVFileName As String)
Call playSound (strWAVFileName, 0, _
SND_ASYNC Or SND_NODEFAULT _
Or SND_FILENAME Or SND_NOWAIT)
'Віртуальне властивість - при читанні повертає
'Ім'я останнього програного файлу
Property Get PlayFile () As String
'При присвоєнні назви
'Події програється звук
Property Let PlaySys (ByVal strSysMsgAlias As String)
Call playSound (strSysMsgAlias, 0, SND_ASYNC Or SND_NODEFAULT Or SND_ALIAS)
'Повертає ім'я останнього програного
Property Get PlaySys () As String
Додайте кнопку програвання файлу і подвійним клацанням миші по формі перейдіть у вікно редагування вихідного тексту форми.
У розділі описів додайте рядок:
Dim SNDPlayer As SoundPlayer '- об'єкт типу SoundPlayer
'Метод ініціалізації форми вже буде виглядати так:
Private Sub UserForm_Initialize ()
'Створення примірника об'єкта
Set SNDPlayer = New SoundPlayer
Set dlgFiler = New dlgFileOpen
'Метод обробки події - натискання
'Кнопки програвання звуку
Private Sub CommandButton1_Click ()
Збережіть набрані програми, перейдіть в таблицю Excel і натисніть кнопку запуску форми. Натисніть кнопку вибору файлу і вкажіть WAV-файл. В поле введення форми з'явиться його повне ім'я. Тепер натисніть кнопку програвання звуку і в повній мірі насолодитися роботою свого творіння.
Щоб досягти більш повного контролю над відтворенням звуку, наприклад, відтворювати звук в інтервалах від 2-ї секунди до 4,52 секунди, довільно зупиняти програвання, робити паузи і продовжувати відтворення, і т.д. треба піти іншим шляхом. Необхідно запрограмувати роботу програми з мультимедіа через MCI (Media Control Interface), що ми далі і будемо робити.
to be continued ...