请教:WIN7下VC读取底层声音信息
下面这段程序是判断系统是静音还是非静音,在winxp下运行正常,但在win7下运行,不管系统是不是静音最后的bMute总是为FALSE。是什么地方win7不支持呢,困惑中,望高手指教,多谢。。。。。。
(附:在win7下以xp兼容模式运行也是正常。)
HMIXER hMixer; // Mixer handle used in mixer API calls.
MIXERCONTROL mxc; // Holds the mixer control data.
MIXERLINE mxl; // Holds the mixer line data.
MIXERLINECONTROLS mxlc; // Obtains the mixer control.
MIXERCONTROLDETAILS mxcd; // Gets the control values.
MIXERCONTROLDETAILS_SIGNED volStruct; // Gets the control values.
MMRESULT mmr;
void GetMute()
{
// 取得控制器.
ZeroMemory(&mxlc, sizeof(mxlc));
mxlc.cbStruct = sizeof(mxlc);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(mxc);
mxlc.pamxctrl = &mxc;
//mxc.cMultipleItems=0;
ZeroMemory(&mxc, sizeof(mxc));
mxc.cbStruct = sizeof(mxc);
mmr = mixerGetLineControls((HMIXEROBJ)hMixer,&mxlc,
MIXER_GETLINECONTROLSF_ONEBYTYPE);
if (MMSYSERR_NOERROR != mmr)
{
/*MessageBox("获取音频控制器失败!","错误",MB_OK|MB_ICONERROR);*/
PostQuitMessage(-1);
}
// 初始化MIXERCONTROLDETAILS结构体
ZeroMemory(&mxcd, sizeof(mxcd));
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(volStruct);
mxcd.dwControlID = mxc.dwControlID;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 1;
mmr = mixerGetControlDetails((HMIXEROBJ)hMixer, &mxcd,
MIXER_SETCONTROLDETAILSF_VALUE);
if(volStruct.lValue==1)
bMute=TRUE;
else
bMute=FALSE;
}