Многие начинающие - Делфисты сталкиваются с ситуацией, когда нужно проиграть какой нибудь звук, безприменения компонента MediaPlayer. Сделать это можно достаточно просто, нужно лишь воспользоваться функцией API PlaySound. Для этого: 1) Прописываем в Uses модуль
MMSystem и кидаем на форму один Button;
2) Создаем обработчик событий OnClick на кнопке где прописываем следующее: 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 или знака + ; Например для непрерывного асинхронного воспроизведения мы можем перестроить наш код следующим образом:
begin PlaySound('C:/Мелодия.wav', 0, SND_ASYNC + SND_LOOP); end; Ну вот вроде бы и все...
|