因为两个声卡名字都是usb audio device,
但两个声卡的pid,vid是不同的(因为声卡类型不同),
所以不能通过改注册表来做如何利用查到的pid,vid来更改系统的默认声卡谢谢。另有一个相关问题,如解决了,就可以通过注册表来做了。
http://community.csdn.net/Expert/topic/3476/3476475.xml?temp=.6945459
但两个声卡的pid,vid是不同的(因为声卡类型不同),
所以不能通过改注册表来做如何利用查到的pid,vid来更改系统的默认声卡谢谢。另有一个相关问题,如解决了,就可以通过注册表来做了。
http://community.csdn.net/Expert/topic/3476/3476475.xml?temp=.6945459
PMIXERCONTROLDETAILS_LISTTEXT pmxcd_lt;
MIXERCONTROLDETAILS mxcd; int nConnections = Get_Connections_Of_Record_By_Index(iIndex);//得到指定的设备的录音源的个数
if (nConnections == 0) return;
int nControlID = Get_ControlID_of_Record_By_Index(iIndex);
mixerOpen(&hmx, iIndex, 0L, 0L, MIXER_OBJECTF_MIXER);
{
HMIXER hmx;
MIXERLINE mxl;
MIXERLINECONTROLS mxlc;
MIXERCONTROL mxctrl;
mixerOpen(&hmx, iIndex, 0L, 0L, MIXER_OBJECTF_MIXER);
//根据MIXERLINE_COMPONENTTYPE_DST_WAVEIN,先得到LineID
mxl.cbStruct = sizeof(MIXERLINE);
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
//获取指定行混音设备的相关信息
if (::mixerGetLineInfo(reinterpret_cast<HMIXEROBJ>(hmx),
&mxl,
MIXER_OBJECTF_HMIXER | /* 目标是返回的设备句柄*/
MIXER_GETLINEINFOF_COMPONENTTYPE /* 返回第一个设备的信息*/)
!= MMSYSERR_NOERROR)
return 0;
//因为该行只包含一个Radio控件 Record Source Control,我们可以得到它的Control ID
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.cControls = 1;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MIXER; //Mixer Type
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxctrl;
if (::mixerGetLineControls((HMIXEROBJ)hmx, &mxlc,MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
!= MMSYSERR_NOERROR)
{
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.cControls = 1;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MUX; //Mux Type
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxctrl;
if (::mixerGetLineControls((HMIXEROBJ)hmx, &mxlc,MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
!= MMSYSERR_NOERROR)
return 0;
}
mixerClose(hmx);
return mxctrl.dwControlID;
}
我QQ:11302868.