Что делать, если нашей программе требуется просто воспроизводить какие-то звуки. Неужели для этого так необходим компонент TMediaPlayer? Конечно, нет.
Функция PlaySound() - одна из наиболее универсальных функций Win32 API -позволяет воспроизводить звук из файла или ресурса, а также звук, сопоставленный с тем или иным системным событием.
function PlaySound(pzsSound : PAnsiChar; hmod, fdwSound : Cardinal) : boolean;
В первый параметр функции могут быть переданы: имя звукового файла, идентификатор ресурса или псевдоним звука, связанного с системным событием. Как функция интерпретирует это значение, зависит от константы (SND_ALIAS, SND_FILENAME или SNDRESOURCE), установленной в третий параметр метода. В случае удачного завершения функция возвращает true.
®Если при обращении к функции PlaySound() в первый параметр передать неопределенный указатель nil, то воспроизведение проигрываемого в данный момент звука будет прекращено.
Если воспроизводимый звук находится в файле-ресурсе, то указатель на этот файл должен быть передан во второй параметр функции, иначе этому параметру следует присвоить нулевое значение. Третий параметр функции содержит флаги, представленные в табл. 30.5.
ОДля работы с мультимедийными функциями Win32 API к проекту необходимо подключить модуль MMSystem.
Пример воспроизведения файла:
PlaySound('c:\type.wav', 0, SND_ASYNC);
Пример воспроизведения звука для системного события «DeviceFail» (отказ устройства):
PlaySoundCDeviceFail-, 0, SND_ALIAS or SND_SYNC or SND_NODEFAULT);
©Псевдонимы звуков для зарегистрированных в системе событий вы обнаружите в следующих ветвях реестра:
HKEY_CURRENT_USER\.DEFAULT\AppEvents\Schemes\Apps и HKEY_USERS\.DEFAULT\AppEvents\Schemes\Apps
Резюме
В этой главе мы лишь коснулись возможностей ОС Microsoft Windows по организации досуга нашего любимого пользователя: мы научились слушать музыку и смотреть фильмы, а точнее, писать программы, способствующие этому. Причем даже слово «коснулись» звучит весьма самоуверенно. В разделе «Windows Multimedia» SDK насчитывается около двух сотен наименований функций, а ведь еще есть OpenGL и DirectX. Какой простор для самостоятельного изучения!