不同的声卡录音控制里的设备不同,如何获得录音控制中麦克风的ID(* 是录音控制中的麦克风,不是音量控制中的麦克风)。我的机器录音控制中麦克风的排号是6,从0开始计数。我该怎样获得
解决方案 »
- 初学者的扩展MFC DLL错误。
- ADO:MDAC2.8 使用createparamter创建adunsignedbigint时老提示错误的变量类型,怎么办?
- 怎么VS2003.NET中没有WM_INITDIALOG消息呢?
- 关于EPS文件的解析
- 如何从已知应用程序的实例句柄推出它的App类实例?
- 请教:visual studio 6.0有没有中文企业版?
- 如何让自己的工具条上的按扭长得像普通的按扭?
- 我的文件需要经常读取1G大小的文件,现在使用是c的读函数fread,fseek,我想知道,如果长时间运行后,读取会不会变得很慢了,如果修改成WINDOW
- 急 急 急 字符编码的问题
- VC中如何进行二维数组动态生成?
- 关于CALLBACK的疑问
- 我的进程运行时占用内存越来越低,怎么回事?
HMIXER hmixer;
MIXERLINE mxl;
UINT uLineIndex; if(mixerOpen(&hmixer, 0, 0, 0, 0))
return false;
mxl.cbStruct = sizeof(mxl);
//获取录音麦克风设备
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
//得到录制总线中的连接数
mixerGetLineInfo((HMIXEROBJ)hmixer, &mxl, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE);
DWORD dwConnections = mxl.cConnections; //记录设备总数
for (DWORD i = 0; i < dwConnections; i++)
{
mxl.dwSource = i; //枚举每一个设备,当Source的ID等于当前的迭代记数
MMRESULT mr = mixerGetLineInfo((HMIXEROBJ)hmixer, &mxl, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_SOURCE); //根据SourceID获得连接的信息
if(mr != 0) //判断函数执行结果
{
break;
}
if(mxl.dwComponentType == MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE) //如果当前设备类型是指定类型是麦克风,则跳出循环。
{
uLineIndex = i;
break;
}
}
mixerClose(hmixer);uLineIndex 的值就是麦克风控制的编号