Delphi урок - відтворюємо звук в програмі без mediaplayer

тільки корисні матеріали

Головний акціонер Alibaba став найбагатшою людиною в Китаї
статті

Microsoft почала закрите тестування Office 16
статті

Фахівці знайшли діри в безпеці Windows 8.1
статті

У московському метро з'явиться єдина мобільна мережа
статті

eBay буде приймати Bitcoin
статті

Vivitek представила «шкільний» проектор D755WTIR
статті

У Твіттері з'явилася кнопка «Купити»
статті

«Яндекс.Новини» тепер можна переглядати і на iPhone
статті

Парадокс, але я часто стикаюся з тим, що багато хто не вміють відтворювати звук в програмі без використання компонента MediaPlayer. У цьому невеликому уроці я хочу виправити цю справу і показати вам, як програти у себе в програмі звуковий файл у форматі Wav без використання MediaPlayer.

Насправді робиться це дуже просто.
Достатньо всього лише додати в розділ uses модуль mmsystem

І далі в місці де вам потрібно відтворити звук використовувати функцію PlaySound

function PlaySound (pszSound: PChar; hmod: HINST; fdwSound: Cardinal): boolean;

Як завжди розберемо це на конкретному прикладі.

Насамперед відкриваємо Delphi. створюємо новий проект і дописуємо в розділ uses модуль mmsystem.
Далі кидаємо на форму кнопку (Button) з закладки Standard і створюємо на ній обробник подій Onclick.
Між begin end пишемо:

PlaySound ( 'D: \ 1.wav'. 0, SND_ASYNC);

Перший параметр в нашій функції це повний шлях до звукового файлу із зазначенням його розширення, тому що у мене файл називається 1.wav і перебувати на диску D: \ я написав тут 'D: \ 1.wav'.
Другий параметр використовується в разі, коли звук береться з ресурсу, оскільки ми цього робити не будемо, то можна цей параметр задавати рівним 0 або nil.
Останній параметр визначає, як буде відтворюватися звук (режим відтворення). Існує кілька режимів відтворення які задаються відповідними прапорами, ось приклад деяких з них:

SND_ASYNC - Звук відтворюється асинхронно і функція повертається відразу ж після початку відтворення. Щоб припинити відтворення потрібно викликати функцію PlaySound з параметром pszSound, рівним 0.
SND_LOOP - відтворення звуку постійно повторюється, одночасно треба встановити прапор SND_ASYNC.
SND_NOSTOP - Якщо заданий звук не може бути відтворений через зайнятість ресурсів, то функція негайно поверне false (і звук не буде відтворено). Якщо ж даний прапор не вказаний, то функція спробує зупинити відтворення іншого звуку, щоб звільнити ресурси.
SND_PURGE - Зупиняє відтворення будь-яких звуків, викликаних в даній задачі.
SND_SYNC - Синхронне відтворення звуку події. Функція PlaySound повертається тільки після закінчення відтворення.

тобто Якщо ми хочемо, щоб звук відтворювався асинхронно і постійно повторювався в нашій функції потрібно використовувати прапори SND_ASYNC і SND_LOOP. Комбінувати прапори можна за допомогою операції or.

PlaySound ( 'D: \ 1.wav'. 0, SND_ASYNC or SND_LOOP);

Ось в принципі і все що я хотів розповісти вам в цьому уроці. До зустрічі.

Схожі статті