如何从程序中改变音量?
如何从程序中改变音量?
尽管有一个注册表键(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) );
如何从程序中改变音量?相关推荐
- python中变量类型在程序中可以改变_python的可变与不可变数据类型
首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型.可变数据类型:列表list和字典dict:不可变数据类型:整型int.浮点型float.字符串型string和元组tuple ...
- python中变量类型在程序中可以改变_详细解析Python当中的数据类型和变量
数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...
- 微信小程序中多个button/view组件中进行切换时改变样式
在小程序项目中遇到一个问题:数据分成四五个小组,然后要进行小组切换,切换的同时把button的样式也要改变,以前Dom操作的时候特别简单, 现在在小程序中竟不知从何下手,后面参照了这边博文:http: ...
- 微信小程序app.js中的全局变量globalData改变,如何通知其它页面界面显示改变,小程序中如何在其他页面中监听到globalData中值的变化
微信小程序app.js中的全局变量globalData改变,如何通知其它页面界面显示改变,小程序中如何在其他页面中监听到globalData中值的变化 在小程序中,我们一般在app.js的onLaun ...
- python中变量类型在程序中可以改变_Python中的变量和数据类型,python,及
变量 变量的定义: 在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢? 大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台 ...
- php表格列宽拖拽,JavaScript_JQuery拖动表头边框线调整表格列宽效果代码,类似于桌面程序中的表格拖动 - phpStudy...
JQuery拖动表头边框线调整表格列宽效果代码 类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放 ...
- 小程序中所有组件学习
视图容器 view 视图容器 属性名 类型 默认值 说明 最低版本 hover-class String none 指定按下去的样式类.当 hover-class="none" 时 ...
- C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...
最新文章
- 2020 最新 JVM 生态报告
- 洛谷P3183食物链题解
- 树——常用的数据结构
- CEO 赠书 |《跨越鸿沟》如何将梦想变为现实?
- 负载均衡实现,一个域名对应多个IP地址
- MySQL高级 - MyISAM特性
- Google再次从官方商店下架伪装成合法程序的恶意应用
- python浅复制与深复制_Python中的浅复制与深复制
- redis数据持久化到mysql_redis 数据持久化的几种方式
- 软件设计师习题笔记-重点习题三
- java点击图片发出声音_[Java教程]点击放大图片
- python 生成空白矩阵_3个用于数据科学的顶级Python库
- python : sha256 、ripemd160
- 三维地下管线系统(skyline)
- Perl-Can't locate Time/HiRes.pm 错误
- 考研计算机专业的优点和缺点,领航考研:跨专业考研优缺点分析
- 解决idea上传文件到svn频繁报错 “Error:Node remians in conflict”、“remains in conflict”
- 独家揭秘:小程序销售额破千万,他们怎么做到的
- 开源项目之Android繁体中文输入法
- DBCO-PEG-NHS,NHS-PEG-DBCO,二苯并环辛炔-聚乙二醇-活性酯,DBCO-PEG衍生物