Мультимедиа под контролем или Функция mciSendString
05.12.2007 от Иван Ширко В данной статье рассматривается функция mciSendString, которая находится в библиотеке winmm.dll. Эта функция может подавать команды любому MCI (Media Control Interface) устройству (поддерживаемое системой мультимедиа устройство: WAV, MIDI, CDAudio, Video и т.п.).
Вот её синтаксис:
MCIERROR mciSendString(
LPCTSTR lpszCommand,
LPTSTR lpszReturnString,
UINT cchReturn,
HANDLE hwndCallback
);
lpszCommand – команда;
lpszReturnString – строка результата;
cchReturn – размер в символах строки результата;
hwndCallback – окно отзыва (используется только при установленном в первом параметре флага "notify").
Все дальнейшие примеры будут написаны на Delphi, но их перевод на другие языки, я думаю, не составит особого труда.
Теперь условимся с параметрами функция mciSendString в последующих примерах:
-
HwndCallback: будет принимать значение 0;
-
CchReturn: будет принимать значение 64 (в MSDN написано, что это максимальная длина ошибки, которая может быть возвращена параметром lpszReturnString);
-
LpszReturnString: в этом параметре будем использовать переменную sbReturn: array [1..64] of char;
Пришло время перейти к самому главному параметру функции – lpszCommand. Эта команда составляется при помощи специальных операторов, часть которых рассматривается далее.
Open
Эта команда поддерживается всеми устройствами. Она служит для инициализации устройства. Синтаксис команды:
'open lpszDeviceID lpszOpenFlags lpszFlags'
Параметры:
LpszDeviceID – идентификатор одного из устройств (или его псевдоним), прописанных в разделе [MCI] файла System.ini или в реестре. Может указывать также на драйвер. Например: cdaudio, sequencer, waveaudio, MyDriver.drv.
LpszOpenFlags – флаг, определяющий дополнительные параметры инициализации устройства. Я не буду приводить весь список значений этого параметра для каждого устройства, а упомяну лишь значение "alias device_alias type device_type", которое открывает устройство типа device_type под псевдонимом device_alias.
LpszFlags – может принимать одно из следующих значений:
- Test – служит для определения возможности выполнения команды, при этом сама команда устройству не отправляется.
- Wait – при этом флаге управление программе передаётся только после выполнения команды.
- Notify – при этом флаге программа получит специальное сообщение, при помощи которого сможет узнать о завершении выполнения команды, а управление передаётся без промедления.
Пример:
Рубрики: Delphi |
02.06.2008 в 15:27
Классно!
13.05.2009 в 13:35
Здравствуйте. Спасибо большое. Пишу только-только взглянув на статью(точнее скопировав себе для дальнейшего ознакомления =) ), но даже на первый взгляд очень информативная и удобочитаемая! (тем более, если Алексей Николаевич Родионов пишет, что “Классно!”, то мне точно понравится))))
Я как раз пишу курсовую работу по обработке звука.Спасибо большое.
10.10.2011 в 10:23
Огромное спасибо! Уже неделю рою интернет в поисках способа восапрозведения видео без использования TMedaiPlayer (ужасно бедный компонент, просто бесит!)…
DirectX тоже не хотелось использовать (пока).
Далее нашёл общее описание по mciSendString, но было не понятно без примеров:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd757161%28v=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743572%28v=VS.85%29.aspx
..а тут Ваша статья с очень хорошими примерами использования данной функций!!
Ещё раз спасибо! Дальше сам
18.10.2011 в 16:23
Замечательная команда и пример шикарный. Может кто-нибудь еще подскажет можно ли поменять громкость воспроизводимого звука. Сам я что-то не нашел..