如何从程序中改变音量?

尽管有一个注册表键(HKEY_CURRENT_USER\ControlPanel\Volume\Volume),每次在控制面板中改变声音设置它也随之改变,不过看起来仅仅改变这个设置不能改变音量。我建议使用另外一种改变音量的途径。这个途径就是使用waveOutSetVolume函数。如果你用这个函数改变音量,控制面板中的设置不被改变,但是实际的音量将被改变。

waveOutSetVolume函数设置某个波形音频输出设备的音量。假设在我们的Pocket PC上仅仅有一个音频输出设备,能够找到第一个设备然后设置它的音量。音量在0和0xFFFF的范围内。

void SetSoundVolume(DWORD dwVolume) {

WAVEFORMATEX wf;

wf.wFormatTag = WAVE_FORMAT_PCM;

wf.nChannels = 1;

wf.nSamplesPerSec = 8000 * 1000;

wf.wBitsPerSample = 8;wf.nBlockAlign = wf.nChannels * wf.wBitsPerSample / 8;

wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign;

wf.cbSize = 0;

HWAVEOUT hwo;

for (UINT id = 0; id < waveOutGetNumDevs(); id++) {

if (waveOutOpen(&hwo, id, &wf, 0, 0, CALLBACK_NULL)

== MMSYSERR_NOERROR)

{

waveOutSetVolume(hwo, dwVolume);

waveOutClose(hwo);

break;

}

}

}

百分比音量:如果你想使用百分比设置音量,而不使用0到0xFFFF范围,那么你可以用下面的代码:

DWORD dwSoundVolumePercents = 50;

SetSoundVolume( (DWORD)(0xFFFF*1.0*dwSoundVolumePercents/100.0) );

如何从程序中改变音量?相关推荐

  1. python中变量类型在程序中可以改变_python的可变与不可变数据类型

    首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型.可变数据类型:列表list和字典dict:不可变数据类型:整型int.浮点型float.字符串型string和元组tuple ...

  2. python中变量类型在程序中可以改变_详细解析Python当中的数据类型和变量

    数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...

  3. 微信小程序中多个button/view组件中进行切换时改变样式

    在小程序项目中遇到一个问题:数据分成四五个小组,然后要进行小组切换,切换的同时把button的样式也要改变,以前Dom操作的时候特别简单, 现在在小程序中竟不知从何下手,后面参照了这边博文:http: ...

  4. 微信小程序app.js中的全局变量globalData改变,如何通知其它页面界面显示改变,小程序中如何在其他页面中监听到globalData中值的变化

    微信小程序app.js中的全局变量globalData改变,如何通知其它页面界面显示改变,小程序中如何在其他页面中监听到globalData中值的变化 在小程序中,我们一般在app.js的onLaun ...

  5. python中变量类型在程序中可以改变_Python中的变量和数据类型,python,及

    变量 变量的定义: 在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢? 大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台 ...

  6. php表格列宽拖拽,JavaScript_JQuery拖动表头边框线调整表格列宽效果代码,类似于桌面程序中的表格拖动 - phpStudy...

    JQuery拖动表头边框线调整表格列宽效果代码 类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放 ...

  7. 小程序中所有组件学习

    视图容器 view 视图容器 属性名 类型 默认值 说明 最低版本 hover-class String none 指定按下去的样式类.当 hover-class="none" 时 ...

  8. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

  9. 在 Android 应用程序中使用 SQLite 数据库以及怎么用

    part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...

最新文章

  1. 2020 最新 JVM 生态报告
  2. 洛谷P3183食物链题解
  3. 树——常用的数据结构
  4. CEO 赠书 |《跨越鸿沟》如何将梦想变为现实?
  5. 负载均衡实现,一个域名对应多个IP地址
  6. MySQL高级 - MyISAM特性
  7. Google再次从官方商店下架伪装成合法程序的恶意应用
  8. python浅复制与深复制_Python中的浅复制与深复制
  9. redis数据持久化到mysql_redis 数据持久化的几种方式
  10. 软件设计师习题笔记-重点习题三
  11. java点击图片发出声音_[Java教程]点击放大图片
  12. python 生成空白矩阵_3个用于数据科学的顶级Python库
  13. python : sha256 、ripemd160
  14. 三维地下管线系统(skyline)
  15. Perl-Can't locate Time/HiRes.pm 错误
  16. 考研计算机专业的优点和缺点,领航考研:跨专业考研优缺点分析
  17. 解决idea上传文件到svn频繁报错 “Error:Node remians in conflict”、“remains in conflict”
  18. 独家揭秘:小程序销售额破千万,他们怎么做到的
  19. 开源项目之Android繁体中文输入法
  20. DBCO-PEG-NHS,NHS-PEG-DBCO,二苯并环辛炔-聚乙二醇-活性酯,DBCO-PEG衍生物

热门文章

  1. Django根据现有数据库建立/更新model
  2. python开发基础作业02:三级菜单,使用字典dic及列表
  3. linux任务计划cron
  4. 条码扫描二维码扫描——ZXing android 源码简化
  5. 在线常用crontab表达式大全验证解析
  6. linux重要的目录之proc和dev目录
  7. Spring安全依赖查找
  8. kernel笔记——库文件与系统调用
  9. JAVA中堆和栈的区别
  10. VS 15 预览 5 中 VB 15 新增的功能