|
Вопрос # 87/ вопрос открыт / |
|
Каким образом можно регулировать громкость звучания при использовании медиаплеера?
Заранее блпгодарен
Генри
 |
Вопрос задал: Freger (статус: Посетитель)
Вопрос отправлен: 27 июля 2006, 15:34
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, Freger!
Можно изменить громкость по каналам.
LeftVolume, RightVolume - значения от 0 дл $FFFF.
waveOutSetVolume объявлена в MMSystem.pas.
Иначе изменить громкость для TMediaPlayer, наверное, не получится.
 |
Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 28 июля 2006, 07:13
Оценка за ответ: 4
Комментарий к оценке: Спасибо за помощь!
|
Ответ #2. Отвечает эксперт: Alexander A. Gribanov
Как установить громкость Wave-канала тебе уже рассказали. В приложении - функция для установки общей громкости. Принимает значения от 0 до 65535, где 0 - минимальная громкость, 65535 - максимальная. Эту функцию можно модифицировать для управления громкостью любого канала микшера, изменив строку
line.dwComponentType:=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS на необходимую. Перечень констант MIXERLINE_COMPONENTTYPE_ххххх см. в mmsystem.pas или MSND.
Приложение: Переключить в обычный режим-
-
- function SetMasterVolume(Volume:word): boolean;
- var
- mx:HMIXER;
- res:MMResult;
- line:MIXERLINE;
- details:tMIXERCONTROLDETAILS;
- prop:MIXERCONTROLDETAILS_UNSIGNED;
- controls:MIXERLINECONTROLS;
- vcontrol:MIXERCONTROL;
- begin
- result := false;
- if MixerGetNumDevs = 0 then Exit;
- res:=MixerOpen(@mx,0,0,0,0);
- if res<>MMSYSERR_NOERROR then Exit;
- try
- line.cbStruct:=SizeOf(line);
- line.dwComponentType:=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
- res:=mixerGetLineInfo(mx,@line,MIXER_GETLINEINFOF_COMPONENTTYPE);
- if res<>MMSYSERR_NOERROR then exit;
- controls.cbStruct:=SizeOf(controls);
- controls.dwLineID:=line.dwLineID;
- controls.cControls:=1;
- controls.dwControlType:=MIXERCONTROL_CONTROLTYPE_VOLUME;
- controls.cbmxctrl:=SizeOf(vcontrol);
- controls.pamxctrl:=@vcontrol;
- vcontrol.cbStruct:=SizeOf(vcontrol);
- res:=mixerGetLineControls(mx,@controls,MIXER_GETLINECONTROLSF_ONEBYTYPE);
- if res<>MMSYSERR_NOERROR then exit;
- details.cbStruct:=SizeOf(details);
- details.dwControlID:=vcontrol.dwControlID;
- details.cChannels:=1;
- details.paDetails:=@prop;
- details.cbDetails:=SizeOf(prop);
- details.cMultipleItems:=0;
- prop.dwValue:=Volume;
- res:=mixerSetControlDetails(mx,@details,MIXER_SETCONTROLDETAILSF_VALUE);
- if res=MMSYSERR_NOERROR then result := true;
- finally
- MixerClose(mx);
- end;
- end;
-
 |
Ответ отправил: Alexander A. Gribanov (статус: 2-ой класс)
Время отправки: 28 июля 2006, 12:02
Оценка за ответ: 4
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|