Понедельник, 25 Ноя 2024, 21:45
Uchi.ucoz.ru
Меню сайта
Форма входа

Категории раздела
Высшая математика [11]
Экономическая социология [95]
Основы Менеджмента [64]
Бухгалтерский учёт [157]
Философия [163]
Мировая Экономика [603]
Бизнес планирование [29]
Финансирование и кредитование инвест [105]
Ценообразование [46]
Гражданское право [196]
Права Человека [173]
Основы Маркетинга [207]
Основы энергосбережения [55]
Информатика [0]
Экология и устойчивое развитие [0]
Физика для студентов [0]
Основы права [0]
Политология [0]
Не стандартные примеры на Delphi [169]
Примеры на Delphi7 [108]
Алгоритмы [94]
API [110]
Pascal [152]
Базы Данных [6]
Новости
Чего не хватает сайту?
500
Статистика
Зарегистрировано на сайте:
Всего: 51647


Онлайн всего: 15
Гостей: 15
Пользователей: 0
Яндекс.Метрика
Рейтинг@Mail.ru

Каталог статей


Главная » Статьи » Студентам » Примеры на Delphi7

Delphi: Процедуры воспроизведения звуков
В этой статье я постараюсь рассмотреть три процедуры для воспроизведения звука. Использование этих процедур вместо компонента TMediaPlayer существенно сэкономит ресурсы системы. С помощью этих процедур можно решать довольно широкий круг задач. Итак, начнем рассмотрение этих процедур с самой простой.

Процедура Beep

Эта процедура не имеет никаких параметров. Ее объявление выглядит довольно-таки просто:

Beep;

Суть этой процедуры - воспроизводить стандартный звуковой сигнал, установленный в Windows, если имеется звуковая карта и настроен стандартный звук, если же нет, то звук поступит через динамик компьютера в виде короткого щелчка. Ее можно использовать, например, при вводе пользователем не тех данных, или при закрытии формы:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Beep;
end;

С первой процедурой мы разобрались. Теперь посмотрим вторую...

Функция MessageBeep

Эта функция является более серьезной, она определена как:

function MessageBeep(uType:word) : boolean;

Параметр uType указывает воспроизводимый звук, как идентификатор раздела [sounds] реестра, в котором записаны звуки, сопровождающие те, или иные события Windows. Параметр uType может принимать следующие значения:

MB_ICONASTERISK - проигрывает звук "Звездочка" (SystemAsterisk)

MB_ICONEXCLAMATION - проигрывает звук "Восклицание" (SystemExclamation)

MB_ICONHAND - проигрывает звук "Критическая ошибка" (SystemHand)

MB_ICONQUESTION - проигрывает звук "Вопрос" (SystemQuestion)

MB_OK - проигрывает звук "Стандартный звук" (SystemDefault)

Надо отметить, что эта функция воспроизводит звук асинхронно, т.е. во время воспроизведения звука Ваше приложение продолжает работать. После запроса звука функция MessageBeep передает управление вызвавшей ее функции.

Если невозможно воспроизвести указанный звук, то функция попытается воспроизвести стандартный системный звук, установленный по умолчанию, если и это невозможно, то будет воспроизведен стандартный сигнал через динамик.

Ну и наконец, осталась самая интересная и полезная функция воспроизведения звука, о ней мы сейчас и поговорим.

Функция PlaySound

Эта функция может воспроизводить любые волновые звуки, а не только звуки событий Windows. Функция API Windows, параметры которой описаны в модуле mmsystem. Поэтому для использования этой функции в Ваших программах, необходимо включить в раздел uses модуль mmsystem. Функция PlaySound определена так:

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

Параметр pszSound является нуль терминированной строкой (последний символ строки имеет нулевой код), он определяет воспроизводимый звук. Параметр hmod используется в случае, когда звук берется из ресурса, поскольку мы этого делать не будем, то можно этот параметр задавать равным 0 или nil.

Последний параметр fdwSound является множеством, которое определяет как будет воспроизводиться звук (режим воспроизведения). Приведу наиболее важные значения этого множества для воспроизведения произвольных волновых флагов.

SND_ASYNC - Звук воспроизводится асинхронно и функция возвращается сразу же после начала воспроизведения. Чтобы прекратить воспроизведение нужно вызвать функцию PlaySound с параметром pszSound, равным 0.

SND_LOOP - воспроизведение звука постоянно повторяется, одновременно надо установить флаг SND_ASYNC.

SND_NOSTOP - Если заданный звук не может быть воспроизведен из-за занятости ресурсов, то функция немедленно вернет false (и звук не будет воспроизведен). Если же данный флаг не указан, то функция попытается остановить воспроизведение другого звука, чтобы освободить ресурсы.

SND_PURGE - Останавливает воспроизведение любых звуков, вызванных в данной задаче.

SND_SYNC - Синхронное воспроизведение звука события. Функция PlaySound возвращается только после окончания воспроизведения.

Важно: флаги можно комбинировать операцией or.

Указанный параметром pszSound звук, должен подходить для установленного драйвера устройства воспроизведения волновых файлов, а также должен помещаться в доступную память.

Прервать воспроизведение звука можно выполнив оператор

PlaySound(0, 0, SND_PURGE);

или путем задания нового звука.

Например, чтобы многократно и асинхронно проиграть какой-нибудь звук, выбранный с помощью OpenDialog, можно написать такой код:

procedure TForm1.Button1Click(Sender: TObject);
var PCh: PChar;
begin
if OpenDialog1.Execute then
begin
StrPCopy(PCh,OpenDialog1.FileName);
PlaySound(Pch,0,SND_ASYNC or SND_LOOP);
end;
end;

Ну вот, надеюсь все ясно...
Категория: Примеры на Delphi7 | Добавил: Lerka (21 Ноя 2012)
Просмотров: 1005 | Рейтинг: 1.0/ 7 Оштрафовать | Жаловаться на материал
Похожие материалы
Всего комментариев: 0

Для блога (HTML)


Для форума (BB-Code)


Прямая ссылка

Профиль
Понедельник
25 Ноя 2024
21:45


Вы из группы: Гости
Вы уже дней на сайте
У вас: непрочитанных сообщений
Добавить статью
Прочитать сообщения
Регистрация
Вход
Улучшенный поиск
Поиск по сайту Поиск по всему интернету
Наши партнеры
Интересное
Популярное статьи
Портфолио ученика начальной школы
УХОД ЗА ВОЛОСАМИ ОЧЕНЬ ПРОСТ — ХОЧУ Я ЭТИМ ПОДЕЛИТ...
Диктанты 2 класс
Детство Л.Н. Толстого
Библиографический обзор литературы о музыке
Авторская программа элективного курса "Практи...
Контрольная работа по теме «Углеводороды»
Поиск
Главная страница
Используются технологии uCoz