WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  ф-ция Mute All

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   ф-ция Mute All
reporter опубликован 06-02-2002 02:42 MSK   Click Here to See the Profile for reporter   Click Here to Email reporter  
В стандартном виндовском микшере под общим увеличителем громкости есть чек-бокс, Mute All. Вот как бы им воспользоваться, т.е. отключить программно. Можно, в приципе, просто уменьшить громкость до нуля, но как это делается, я не понял. Следуя заветам GE, облазил MSDN, нашел кое-что, но очень непонятное. Вроде народ пользуется waveOutSetVolume(), но как ? Если кто знает, помогите, плз... Спасибо за внимание. :)
One опубликован 06-02-2002 11:07 MSK     Click Here to See the Profile for One  Click Here to Email One     
смотри mixerOpen(), mixerClose() и ежи сними. Я когда-то с этим делом заморачивался, но сейчас уже ни черта не помню. Но работать надо через них.
DimaK опубликован 06-02-2002 13:43 MSK     Click Here to See the Profile for DimaK  Click Here to Email DimaK     
One прав через них надо. если хочешь завтра исходники принесу. ниже я тут спросил в продолжение как раз этой темы в некоторых микшерах рядом с регулятором вава бывает показатель уровня сигнала как его зделать?
reporter опубликован 06-02-2002 14:28 MSK     Click Here to See the Profile for reporter  Click Here to Email reporter     
Да, DimaK, если не трудно, все-таки выкинь сорцы. Я тут пока позаморачиваюсь с mixerOpen и т.д. :)
Sphynx опубликован 07-02-2002 12:22 MSK     Click Here to See the Profile for Sphynx  Click Here to Email Sphynx     
http://www.xakep.ru/magazine/xa/036/052/1.asp
Замедление сис. часов в Виндовз9х
Sphynx опубликован 07-02-2002 12:24 MSK     Click Here to See the Profile for Sphynx  Click Here to Email Sphynx     
Sorry, не туда попал:)))
DimaK опубликован 07-02-2002 08:53 MSK     Click Here to See the Profile for DimaK  Click Here to Email DimaK     
OpenAudioMixer(hmix, id, MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC);
int SetVolume(HMIXER hmix, DWORD id, 0);
mixerClose(hmix);

void OpenAudioMixer(HMIXER &hMixer, DWORD &id, DWORD dwComponentType)
{
MMRESULT rc; // Return code.
MIXERCONTROL mxc; // Holds the mixer control data.
MIXERLINE mxl; // Holds the mixer line data.
MIXERLINECONTROLS mxlc; // Obtains the mixer control.

rc = mixerOpen(&hMixer, 0,0,0,0);
if (MMSYSERR_NOERROR == rc) {
// Couldn't open the mixer.
}

// Initialize MIXERLINE structure.
ZeroMemory(&mxl,sizeof(mxl));
mxl.cbStruct = sizeof(mxl);

mxl.dwComponentType = dwComponentType;

rc = mixerGetLineInfo((HMIXEROBJ)hMixer, &mxl,
MIXER_GETLINEINFOF_COMPONENTTYPE);
if (MMSYSERR_NOERROR == rc) {
// Couldn't get the mixer line.
}

// Get the control.
ZeroMemory(&mxlc, sizeof(mxlc));
mxlc.cbStruct = sizeof(mxlc);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;//MIXERCONTROL_CONTROLTYPE_PEAKMETER;это для главного регулятора. вообще здесь можно поставить MIXERCONTROL_CONTROLTYPE_MUTE и должно сработать отключение звука но происходит ошибка

mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(mxc);
mxlc.pamxctrl = &mxc;
ZeroMemory(&mxc, sizeof(mxc));
mxc.cbStruct = sizeof(mxc);
rc = mixerGetLineControls((HMIXEROBJ)hMixer,&mxlc,
MIXER_GETLINECONTROLSF_ONEBYTYPE);
if (MMSYSERR_NOERROR == rc) {
// Couldn't get the control. MIXERR_INVALCONTROL
}

id = mxc.dwControlID;
}

DWORD GetVolume(HMIXER hMixer, DWORD id)
{
MMRESULT rc; // Return code.
MIXERCONTROLDETAILS mxcd; // Gets the control values.
MIXERCONTROLDETAILS_SIGNED volStruct[2]; // Gets the control values.

ZeroMemory(&mxcd, sizeof(mxcd));
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(volStruct);
mxcd.dwControlID = id;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 2;
volStruct[0].lValue=0;
volStruct[1].lValue=0;
rc = mixerGetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_GETCONTROLDETAILSF_VALUE);

if (MMSYSERR_NOERROR == rc) {
return MAKELONG(volStruct[0].lValue, volStruct[1].lValue);
}
return -1;
}

int SetVolume(HMIXER hMixer, DWORD id, DWORD vol)
{
MMRESULT rc; // Return code.
MIXERCONTROLDETAILS mxcd; // Gets the control values.
MIXERCONTROLDETAILS_SIGNED volStruct[2]; // Gets the control values.

ZeroMemory(&mxcd, sizeof(mxcd));
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(volStruct);
mxcd.dwControlID = id;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 2;
volStruct[0].lValue=LOWORD(vol);
volStruct[1].lValue=HIWORD(vol);
rc = mixerSetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);

if (MMSYSERR_NOERROR == rc) {
return 0;
}
return -1;
}

reporter опубликован 07-02-2002 14:55 MSK     Click Here to See the Profile for reporter  Click Here to Email reporter     
Спасибо, буду разбираться :)
DimaK опубликован 07-02-2002 15:06 MSK     Click Here to See the Profile for DimaK  Click Here to Email DimaK     
2reporter если найдешь способ как муте заставить работать свиснешь

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.