【转载:实测有效】WASAPI 音量控制 IAudioEndpointVolume
转载自:编程调节Win7/Win8系统音量的一种方法 - 女孩不哭 - 博客园 (cnblogs.com)
音量控制主要用到IAudioEndpointVolume接口,官方文档:
#include <windows.h>
#include <mmdeviceapi.h>
#include <endpointvolume.h>
#include <audioclient.h>//参数:
// -2 恢复静音
// -1 静音
// 0~100:音量比例
bool SetVolumeLevel(int level)
{HRESULT hr;IMMDeviceEnumerator* pDeviceEnumerator=0;IMMDevice* pDevice=0;IAudioEndpointVolume* pAudioEndpointVolume=0;IAudioClient* pAudioClient=0;try{hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),NULL,CLSCTX_ALL,__uuidof(IMMDeviceEnumerator),(void**)&pDeviceEnumerator);if(FAILED(hr)) throw "CoCreateInstance";hr = pDeviceEnumerator->GetDefaultAudioEndpoint(eRender,eMultimedia,&pDevice);if(FAILED(hr)) throw "GetDefaultAudioEndpoint";hr = pDevice->Activate(__uuidof(IAudioEndpointVolume),CLSCTX_ALL,NULL,(void**)&pAudioEndpointVolume);if(FAILED(hr)) throw "pDevice->Active";hr = pDevice->Activate(__uuidof(IAudioClient),CLSCTX_ALL,NULL,(void**)&pAudioClient);if(FAILED(hr)) throw "pDevice->Active";if(level==-2){hr = pAudioEndpointVolume->SetMute(FALSE,NULL);if(FAILED(hr)) throw "SetMute";}else if(level==-1){hr = pAudioEndpointVolume->SetMute(TRUE,NULL);if(FAILED(hr)) throw "SetMute";}else{if(level<0 || level>100){hr = E_INVALIDARG;throw "Invalid Arg";}float fVolume;fVolume = level/100.0f;hr = pAudioEndpointVolume->SetMasterVolumeLevelScalar(fVolume,&GUID_NULL);if(FAILED(hr)) throw "SetMasterVolumeLevelScalar";pAudioClient->Release();pAudioEndpointVolume->Release();pDevice->Release();pDeviceEnumerator->Release();return true;}}catch(...){if(pAudioClient) pAudioClient->Release();if(pAudioEndpointVolume) pAudioEndpointVolume->Release();if(pDevice) pDevice->Release();if(pDeviceEnumerator) pDeviceEnumerator->Release();throw;}return false;
}int main()
{CoInitialize(0);try{//3秒后静音Sleep(3000);SetVolumeLevel(-1);//3秒后恢复静音Sleep(3000);SetVolumeLevel(-2);//调节音量Sleep(3000);SetVolumeLevel(10);Sleep(3000);SetVolumeLevel(30);Sleep(3000);SetVolumeLevel(20);}catch(...){//错误处理...}CoUninitialize();return 0;
}
【转载:实测有效】WASAPI 音量控制 IAudioEndpointVolume相关推荐
- Android音量控制曲线
摘要:本文介绍了android音量的控制曲线的计算方法. 由于人耳对声音的听感具指数曲线型,也就是对小音量时比较敏感,随着声音的加大其听感随之变的不敏感,其变化近似指数函数曲线的形式.为了使听感变的近 ...
- ALSA声卡12_从零编写之添加音量控制_学习笔记
1.设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_IOCTL_ ...
- krpano音量控制(我们已经转移到krpano中国网站 krpano360.com)
需求: 实现音量控制,这是官网的样例, 本文已经转移 到 krpano中文网 http://krpano360.com/? p=148 很多其它教程关注微信公众号 krpano 以及krpano中文网 ...
- Android应用--简、美音乐播放器增加音量控制
Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...
- win7 系统下实现音量控制
win7对audio做了改进,除了有总音量控制, 每个程序又有自己的音量控制.通常XP下控制音量的函数只能控制自己的音量而无法控制主音量.(比如函数 :mixerGetLineInfo .mixerG ...
- Windows 7单个程序音量控制
以下代码的作用是控制当前程序的声音,并将其他程序的声音关闭. 代码如下: BOOL SetCurrentProcessVolume(DWORD dwVolume,BOOL IsMixer/*TRUE* ...
- PCM音量控制(初级篇)
一.声音的相关概念 声音是介质振动在听觉系统中产生的反应.声音总可以被分解为不同频率不同强度正弦波的叠加(傅里叶变换). 声音有两个基本的物理属性:频率与振幅.声音的振幅就是音量,频率的高低就是指音调 ...
- MFC 音量控制相关资料
MMRESULT 可能是 WINMM (视窗多媒体 库 Winmm.dll 里 用的一个enum型变量), public static enum MMRESULT : uint{ MMSYSERR_N ...
- win7音频 audio service调节单个程序音量控制
以下代码的作用是控制当前程序的声音,并将其他程序的声音关闭. 代码如下: [cpp] view plain copy BOOL SetCurrentProcessVolume(DWORD dwVolu ...
最新文章
- 初学git:用git bash往github push代码
- 软件测试Web数据分析工具HttpWatch安装
- Daily Scrum Meeting ——ZeroDay(Beta)12.08
- 数据库事务原理详解-事务的嵌套
- pingfangsc字体_2020-iOS GUI-字体规范
- Eigen(8)实例最小二乘法
- Sublime Text 3 代码格式化插件推荐 CodeFormatter
- 设计模式(二) 模板方法
- 单例设计模式-静态内部类
- ThinkPHP6项目基操(7.模型)
- 斐波那契数列(java)
- 什么叫大数据人物画像_【说大数据】人物画像 :大数据时代的心灵捕手
- NGUI学习笔记(四).Sprite的Sliced类型与解决拉伸模糊的问题
- flutter插件开发学习之旅(4)-------检测GPS状态,打开GPS和显示经纬度实战
- 昆石VOS3000_2.1.4.0安装脚本
- 针对优衣库商品的图片获取(第一张)以及excel图片链接显示成图片
- 基于FPGA的UART串口通信实验(VHDL语言实现)
- diagnosing error in object detectors 浅析
- Atom汉化之Atom-Simplified-Chinese-Menu
- 点阵字python_Python点阵字玩转动态歌词
热门文章
- JavaScript:简易ATM机案例
- 打开html自动最大化,打开网页最大化的设置方法【图文教程】
- array.groupBy,对数组进行分类
- 什么嵌入式计算机系统设计,嵌入式系统设计分为哪些方向
- wxpython入门_wxPython入门
- 零配置自动开局——Zero Touch Provisioning
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- stm32.cube(六)——HAL.FLASH
- Linux如何查看内核版本并安装内核头文件linux-headers-generic
- Android 数据库Realm入门