• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: C/C++
  • 标签: C++  windows  

资源简介

网上找的一些代码,用C++实现windows下获取音频信息(音量,是否静音).

资源截图

代码片段和文件信息

// Mixer.cpp: implementation of the CMixer class.
//
//#include “stdwx.h“
#include “Mixer.h“


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMixer::CMixer()
{
m_VolRange = 100;
}

CMixer::~CMixer()
{

}

CMixer::CMixer(const int VolRange)
{
m_VolRange = VolRange;
}
//----------------------------设定音量---------------------------------------

bool CMixer::GetVolumeControl(HMIXER hmixer long componentTypelong ctrlTypeMIXERCONTROL* mxc)
{
MIXERLINECONTROLS mxlc;
MIXERLINE mxl;
bool exist = false;
mxl.cbStruct = sizeof(mxl);
mxl.dwComponentType = componentType;

if (componentType == MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE)
{//获取录音麦克风设备
mxl.dwComponentType   =   MIXERLINE_COMPONENTTYPE_DST_WAVEIN;   
//   得到录制总线中的连接数   
mixerGetLineInfo(   (HMIXEROBJ)hmixer   &mxl   
MIXER_objectF_HMIXER   |   MIXER_GETLINEINFOF_COMPONENTTYPE   );   
//   将连接数保存   
DWORD   dwConnections   =   mxl.cConnections;   
//   准备获取麦克风设备的ID   
DWORD   dwLineID   =   0;   
for   (   DWORD   i   =   0;   i   <   dwConnections;   i++   )   
{   
//   枚举每一个设备,当Source的ID等于当前的迭代记数   
mxl.dwSource   =   i;   
//   根据SourceID获得连接的信息   
MMRESULT mr   =   mixerGetLineInfo(   (HMIXEROBJ)hmixer   &mxl   
MIXER_objectF_HMIXER   |   MIXER_GETLINEINFOF_SOURCE   );   
//   判断函数执行错误   
if   (   mr   !=   0   )   
{   
break;   
}   
//   如果当前设备类型是麦克风,则跳出循环。   
if   (   mxl.dwComponentType   ==   
MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE   )   
{   
exist = true;
break;   
}   

}else if(!mixerGetLineInfo((HMIXEROBJ)hmixer &mxl MIXER_GETLINEINFOF_COMPONENTTYPE))
{
exist = true;
}

if (exist)
{
mxlc.cbStruct = sizeof(mxlc);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = ctrlType;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = mxc;
if(mixerGetLineControls((HMIXEROBJ)hmixer&mxlcMIXER_GETLINECONTROLSF_ONEBYTYPE))
return 0;
else
return 1;
}
return 0;
}
//---------------------------------------------------------------------------
long CMixer::GetMuteValue(HMIXER hmixer MIXERCONTROL *mxc)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_BOOLEAN mxcdMute;
mxcd.hwndOwner = 0;
mxcd.cbStruct = sizeof(mxcd);
mxcd.dwControlID = mxc->dwControlID;
mxcd.cbDetails = sizeof(mxcdMute);
mxcd.paDetails = &mxcdMute;
mxcd.cChannels = 1;
mxcd.cMultipleItems = 0;
if (mixerGetControlDetails((HMIXEROBJ)hmixer &mxcdMIXER_objectF_HMIXER|MIXER_GETCONTROLDETAILSF_VALUE))
return -1;
return mxcdMute.fValue;
}

//---------------------------------------------------------------------------
unsigned CMixer::GetVolumeValue(HMIXER hmixer MIXERCONTROL *mxc)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_UNSIGNED vol; 
vol.dwValue=0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9291  2012-03-15 22:27  windows下获取音频信息(C++实现)\version1\Mixer.cpp

     文件       1373  2012-03-15 22:26  windows下获取音频信息(C++实现)\version1\Mixer.h

     文件       4266  2012-03-15 22:49  windows下获取音频信息(C++实现)\version2\Mixer_v2.cpp

     目录          0  2012-03-15 23:24  windows下获取音频信息(C++实现)\version1

     目录          0  2012-03-15 23:24  windows下获取音频信息(C++实现)\version2

     目录          0  2012-03-15 23:25  windows下获取音频信息(C++实现)

----------- ---------  ---------- -----  ----

                14930                    6


评论

共有 条评论