永发信息网

如何用程序控制windows的麦克风的静音开关

答案:2  悬赏:30  手机版
解决时间 2021-12-17 12:40
如何用程序控制windows的麦克风的静音开关
最佳答案
用程序控制windows的麦克风的静音开关的方法:

用MIXER来做。example:
BOOL CMixer::GetRecordradio()
{
UINT m_uMxId2;
// HWND m_hWnd;//回调句柄
HMIXER m_hmx2;
MIXERCAPS mxcaps;

//返回系统中混音器数量(如:一块普通声卡提供一个混音器设备)
int devnum=mixerGetNumDevs();
int i=0;

for(i;i{
m_uMxId2=i;
if (MMSYSERR_NOERROR !=
mixerOpen(&m_hmx2, m_uMxId2,(DWORD)m_hWnd, 0, CALLBACK_WINDOW))
//使用dwCallback参数
return -1;

//得到相应设备标识号
//mixerGetID((HMIXEROBJ)m_hmx2,&m_uMxId,MIXER_OBJECTF_HMIXER);

//确定各混音器设备的能力:保存在mxcaps结构中(wMid,wPid,szname,cDestinations)
if (MMSYSERR_NOERROR !=
mixerGetDevCaps(m_uMxId2,&mxcaps,sizeof(MIXERCAPS)))
return FALSE;

//检索指定音频线路的信息,保存在MIXERLINE结构中,
//其中一些成员根据不同情况要初始化
MIXERLINE mxl;
mxl.cbStruct = sizeof(MIXERLINE); //必须赋值

//可以通过多种条件来检索:
//方式一:根据目标单元编号
//mxl.dwDestination=0;等同用mxl.dwComponentType=
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
//mxl.dwDestination=1;等同用mxl.dwComponentType=
MIXERLINE_COMPONENTTYPE_DST_WAVEIN
//对应flag: MIXER_GETLINEINFOF_DESTINATION
//mxl.dwDestination=1;

//方式二:根据线路类型
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
//对应flag: MIXER_GETLINEINFOF_COMPONENTTYPE

if (::mixerGetLineInfo((HMIXEROBJ)m_hmx2,
&mxl,
MIXER_OBJECTF_HMIXER |
MIXER_GETLINEINFOF_COMPONENTTYPE)
!= MMSYSERR_NOERROR) return -1;

//查询 录音控制面版中 麦克风线路的编号
MIXERLINE mxl_v;
UINT cConnections = (UINT)mxl.cConnections;
UINT dwSource_v=0;
do
{
mxl_v.cbStruct = sizeof(mxl_v);
mxl_v.dwDestination = mxl.dwDestination;
mxl_v.dwSource = dwSource_v;
dwSource_v++;
if (MMSYSERR_NOERROR !=
mixerGetLineInfo((HMIXEROBJ)m_hmx2,
&mxl_v,
MIXER_GETLINEINFOF_SOURCE))
return FALSE;
} while ((dwSource_v < cConnections) &&
(mxl_v.dwComponentType != MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE));

if((dwSource_v > cConnections) ||
(mxl_v.dwComponentType !=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE))
return FALSE;
dwSource_v--;//得到编号

//下面这段文字说明在本例中已经没有什么实际意义,是以前调试时留下的,也不删除了,
//可以知道如何控制主音(Volume)线路的禁音状态:
//--可以利用得到的主音(Volume)线路的mxl.dwLineID,
//来查询Volume的禁音状态
//要想查询(或设置)可以混音到DST_SPEAKERS主音(Volume)中的
//相关音源线路(如:wave、micphone等)的禁音状态,还必须再使用
//一次 mixerGetLineInfo 进一步指定其dwLineID
//注意:不要简单的直接修改上面的:
//mxl.dwComponentType = 类型;
//虽然可能有时不会报错,但这成了我们程序中的隐患,
//因为有的线路在DST_SPEAKERS和DST_WAVEIN中均有,如:
//MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC

//下面实现了"强制"单选麦克风线路为录音源输入
MIXERCONTROL mxc;
MIXERLINECONTROLS mxlc;
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MUX;
//MIXERCONTROL_CONTROLTYPE_MUTE;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxc; //为了得到相应的mxc.dwControlID,
//锁定mxlc.dwLineID和mxlc.dwControlType指定的线路控制
//目前将对录音目标单元的录音音源线路做单选(多路复用)
if (::mixerGetLineControls((HMIXEROBJ)m_hmx2,
&mxlc,
MIXER_OBJECTF_HMIXER |
MIXER_GETLINECONTROLSF_ONEBYTYPE)
!= MMSYSERR_NOERROR) return -1;

//根据mxc.dwControlID检索线路,
MIXERCONTROLDETAILS_BOOLEAN mxcdMute[8];
MIXERCONTROLDETAILS mxcd;
mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
mxcd.dwControlID = mxc.dwControlID;//在上面的&mxc得到
mxcd.cChannels = 1;
mxcd.cMultipleItems =mxc.cMultipleItems;//多路因子数目
mxcd.cbDetails = sizeof(*mxcdMute);
mxcd.paDetails =&mxcdMute;//存放检索结果
if (::mixerGetControlDetails((HMIXEROBJ)m_hmx2,
&mxcd,
MIXER_OBJECTF_HMIXER |
MIXER_GETCONTROLDETAILSF_value)
!= MMSYSERR_NOERROR) return -1;

//做相应单选改变
int j;
for(j=0;j<(int)mxc.cMultipleItems;j++)
mxcdMute[j].fvalue=false;
mxcdMute[dwSource_v].fvalue=true;

//重新设置dwControlID锁定的线路控制
if (::mixerSetControlDetails((HMIXEROBJ)m_hmx2,
&mxcd,
MIXER_OBJECTF_HMIXER |
MIXER_GETCONTROLDETAILSF_value)
!= MMSYSERR_NOERROR) return -1;
}//for(i;ireturn TRUE;
}


================

::ZeroMemory(&m_mxcaps, sizeof(MIXERCAPS));//指定区域清零

(iwgh)
全部回答
你插的时候会弹出一个类似向导的咚咚 按提示做就行了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
马治平跟马志平那个名字好呢?
小车上,刹车盘后面的那个传感器是什麽传感器
我想接个灯只有火线没零线怎么办
我的世界手机版热点联机花流量
我想买咖啡桌椅但不知道在哪里买
判断题港澳地区与珠江三角洲地区的合作以“前
旧版神雕侠侣女主角叫什么
奔路吧几只脚几只手落地的是哪一集
电线是怎么钉墙上的
屈原是中国最早的伟大诗人吗?
咯吱窝抬起来就鼓疙子是怎么回事
用东南西北组成语在16个方格里组成16个成语,
请问一下hope的用法,是hopesbdosth还是hopes
08款君越车门开关位置
pokemongopinsir多少值得培养
推荐资讯
岳阳市国土资源局云溪区分局办公地址在什么地
如果生第二台不达标,生三台罚款吗?
百度文库下载的文档找不到了
临猗县工商行政管理局卓里工商所在什么地方啊
被交警追了一段路程熄火朋友就下车推车交警就
小屋岭派出所办公地址在什么地方?我要处理点
在温度为20度时,有50g带有少量泥沙的粗盐,问
东宝区荆门古泷堂怎么去啊,谁知道地址啊
江北村委会地址在什么地方?想过去办事
在平面直角坐标系中,点A(1,0),点D(2,1
搜狗,百度,qq哪一种输入法好
电影《闪闪的红星》主题歌中游这样的歌词“小
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?