如何让系统主音量“静音”?
我知道用mixerAPI,mixerGetLineInfo,比如MIXERLINE结构体的dwComponentType成员设置为MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,就可以调节主音量的大小,但是不知道如何实现静音...
我知道用mixerAPI,mixerGetLineInfo,比如MIXERLINE结构体的dwComponentType成员设置为MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,就可以调节主音量的大小,但是不知道如何实现静音...
好多例子。
codeproject下搜下CVolumeOutWave。
类似的帖子
http://www.qsl.net/i2phd/mixer/index.html
http://digi.it.sohu.com/20051117/n240738779.shtml
http://yvqvan.blog.163.com/blog/static/2541510320094113026546/
MMRESULT CMyDlg::SetSystemSound(BOOL bOpen,DWORD Value,LPBOOL pOldOpen,LPDWORD pOldValue)
{
MMRESULT ret;
HMIXER hMixer;
ret=mixerOpen(&hMixer, 0, 0, 0, MIXER_OBJECTF_HMIXER); MIXERLINE mxLineInfo;
mxLineInfo.cbStruct=sizeof(MIXERLINE);
mxLineInfo.dwComponentType=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
ret=mixerGetLineInfo((HMIXEROBJ)hMixer, &mxLineInfo,
MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE); MIXERCONTROL mxCtrl;
MIXERLINECONTROLS mxCtrls;
mxCtrls.cbStruct = sizeof(MIXERLINECONTROLS);
mxCtrls.dwLineID = mxLineInfo.dwLineID;
mxCtrls.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE;
mxCtrls.cControls = 1;
mxCtrls.cbmxctrl = sizeof(MIXERCONTROL);
mxCtrls.pamxctrl = & mxCtrl; ret=mixerGetLineControls(HMIXEROBJ(hMixer), &mxCtrls,
MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE); MIXERCONTROLDETAILS_BOOLEAN mxcdVolume;
MIXERCONTROLDETAILS mxDetails; mxDetails.cbStruct = sizeof(MIXERCONTROLDETAILS);
mxDetails.dwControlID = mxCtrl.dwControlID;
mxDetails.cChannels = 1;
mxDetails.cMultipleItems = mxCtrl.cMultipleItems;
mxDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN);
mxDetails.paDetails = &mxcdVolume;
ret=mixerGetControlDetails(HMIXEROBJ(hMixer), &mxDetails,
MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE);
if(pOldOpen!=NULL)
*pOldOpen= !mxcdVolume.fValue;
mxcdVolume.fValue = !bOpen;
mixerSetControlDetails(HMIXEROBJ(hMixer), &mxDetails,
MIXER_OBJECTF_HMIXER | MIXER_SETCONTROLDETAILSF_VALUE); MIXERCONTROLDETAILS_UNSIGNED value;
mxDetails.dwControlID=0;
mxDetails.paDetails = &value;
mxDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
ret=mixerGetControlDetails((HMIXEROBJ)hMixer, &mxDetails,
MIXER_OBJECTF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE); if(pOldValue!=NULL)
*pOldValue=value.dwValue;
value.dwValue = Value; ret=mixerSetControlDetails((HMIXEROBJ)hMixer, &mxDetails,
MIXER_OBJECTF_HMIXER| MIXER_SETCONTROLDETAILSF_VALUE);
ret=mixerClose(hMixer); return ret;
}