資源簡介
網上找的一些代碼,用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
- 上一篇:3D賽車小游戲(DX學習)
- 下一篇:生產者消費者問題c++實現
評論
共有 條評論