如何让系统主音量“静音”?
我知道用mixerAPI,mixerGetLineInfo,比如MIXERLINE结构体的dwComponentType成员设置为MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,就可以调节主音量的大小,但是不知道如何实现静音...

解决方案 »

  1.   

    http://topic.csdn.net/t/20030717/02/2037646.html
      

  2.   

    mute?
    好多例子。
    codeproject下搜下CVolumeOutWave。
      

  3.   

    http://topic.csdn.net/t/20041030/14/3506029.html
    类似的帖子
      

  4.   

    可以结贴了http://www.codeproject.com/KB/audio-video/admixer.aspx
      

  5.   

    静音
    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;
    }