资源简介
网上找的一些代码,用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++实现
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- Qt5串口通信-windows
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- 新编Windows API参考大全.doc
- windows hook 框架(detours )
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
评论
共有 条评论