转载自:编程调节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相关推荐

  1. Android音量控制曲线

    摘要:本文介绍了android音量的控制曲线的计算方法. 由于人耳对声音的听感具指数曲线型,也就是对小音量时比较敏感,随着声音的加大其听感随之变的不敏感,其变化近似指数函数曲线的形式.为了使听感变的近 ...

  2. ALSA声卡12_从零编写之添加音量控制_学习笔记

    1.设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_IOCTL_ ...

  3. krpano音量控制(我们已经转移到krpano中国网站 krpano360.com)

    需求: 实现音量控制,这是官网的样例, 本文已经转移 到 krpano中文网 http://krpano360.com/? p=148 很多其它教程关注微信公众号 krpano 以及krpano中文网 ...

  4. Android应用--简、美音乐播放器增加音量控制

    Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...

  5. win7 系统下实现音量控制

    win7对audio做了改进,除了有总音量控制, 每个程序又有自己的音量控制.通常XP下控制音量的函数只能控制自己的音量而无法控制主音量.(比如函数 :mixerGetLineInfo .mixerG ...

  6. Windows 7单个程序音量控制

    以下代码的作用是控制当前程序的声音,并将其他程序的声音关闭. 代码如下: BOOL SetCurrentProcessVolume(DWORD dwVolume,BOOL IsMixer/*TRUE* ...

  7. PCM音量控制(初级篇)

    一.声音的相关概念 声音是介质振动在听觉系统中产生的反应.声音总可以被分解为不同频率不同强度正弦波的叠加(傅里叶变换). 声音有两个基本的物理属性:频率与振幅.声音的振幅就是音量,频率的高低就是指音调 ...

  8. MFC 音量控制相关资料

    MMRESULT 可能是 WINMM (视窗多媒体 库 Winmm.dll 里 用的一个enum型变量), public static enum MMRESULT : uint{ MMSYSERR_N ...

  9. win7音频 audio service调节单个程序音量控制

    以下代码的作用是控制当前程序的声音,并将其他程序的声音关闭. 代码如下: [cpp] view plain copy BOOL SetCurrentProcessVolume(DWORD dwVolu ...

最新文章

  1. 初学git:用git bash往github push代码
  2. 软件测试Web数据分析工具HttpWatch安装
  3. Daily Scrum Meeting ——ZeroDay(Beta)12.08
  4. 数据库事务原理详解-事务的嵌套
  5. pingfangsc字体_2020-iOS GUI-字体规范
  6. Eigen(8)实例最小二乘法
  7. Sublime Text 3 代码格式化插件推荐 CodeFormatter
  8. 设计模式(二) 模板方法
  9. 单例设计模式-静态内部类
  10. ThinkPHP6项目基操(7.模型)
  11. 斐波那契数列(java)
  12. 什么叫大数据人物画像_【说大数据】人物画像 :大数据时代的心灵捕手
  13. NGUI学习笔记(四).Sprite的Sliced类型与解决拉伸模糊的问题
  14. flutter插件开发学习之旅(4)-------检测GPS状态,打开GPS和显示经纬度实战
  15. 昆石VOS3000_2.1.4.0安装脚本
  16. 针对优衣库商品的图片获取(第一张)以及excel图片链接显示成图片
  17. 基于FPGA的UART串口通信实验(VHDL语言实现)
  18. diagnosing error in object detectors 浅析
  19. Atom汉化之Atom-Simplified-Chinese-Menu
  20. 点阵字python_Python点阵字玩转动态歌词

热门文章

  1. JavaScript:简易ATM机案例
  2. 打开html自动最大化,打开网页最大化的设置方法【图文教程】
  3. array.groupBy,对数组进行分类
  4. 什么嵌入式计算机系统设计,嵌入式系统设计分为哪些方向
  5. wxpython入门_wxPython入门
  6. 零配置自动开局——Zero Touch Provisioning
  7. C/C++文件输入输出操作——FILE*、fstream、windowsAPI
  8. stm32.cube(六)——HAL.FLASH
  9. Linux如何查看内核版本并安装内核头文件linux-headers-generic
  10. Android 数据库Realm入门