Воспроизведение звука без проигрывателя в Delphi
Воспользуемся функцией API PlaySound.
1) Прописываем в Uses модуль MMSystem и кидаем на форму один Button;
2) Создаем обработчик событий OnClick на кнопке где прописываем следующее:
1 2 3 |
begin PlaySound('C:/Мелодия.wav', 0, SND_ASYNC); end; |
3) Берем какой нибудь wav файл, переименовываем его в Мелодия.wav, кидаем его на диск C:/ и нажимаем на наш Button. Будет проигрываться указанный звук или мелодия.
Кому интересно не много узнать об этой функции, теперь по подробнее:
function PlaySound(pszSound:PChar; hmod:HINST; fdwSound:Cardinal) :boolean;
pszSound: — Здесь задает имя звукового файла или адрес ресурса, по которому находится звук (в нашем коде это (‘C:/Мелодия.wav’));
hmod: — Handle на модуль где содержится ресурс, он используется только при хранении звуковых данных в ресурсе, а для загрузки звукового файла он должен быть равен нулю NULL или 0; (в нашем случае, поскольку мы проигрываем звуковой файл это (0));
fdwSound: — Управляющий флаг (Способ воспроизведения). Ниже привожу некоторые «флажки»:
SND_MEMORY — Проигрывание содержимого памяти (Если звук помещен в переменную памяти);
SND_SYNC — Проигрывать синхронно; (Флаг замораживает программу на время воспроизведения);
SND_ASYNC — Проигрывать асинхронно; (Выполняется не зависимо от процесса работы программы);
SND_LOOP — Воспроизведение постоянно повторяется;
SND_PURGE — Остановка звука;
Существуют также другие флаги для управления воспроизведением, а в нашем случае использован флаг (SND_ASYNC);
Флаги также можно комбинировать с помощью логической операции or или знака + ; Например для непрерывного асинхронного воспроизведения мы можем перестроить наш код следующим образом:
1 2 3 |
begin PlaySound('C:/Мелодия.wav', 0, SND_ASYNC + SND_LOOP); end; |