C# Winform 通过 NAudio 获取控制电脑操作系统音量
https://github.com/naudio/NAudio
NAudio 是一个开源的 .NET 音频库,由 Mark Heath 开发,开源地址:https://github.com/naudio/NAudio 支持多种音频操作,可实现多种API播放与录制、多种不同音频格式、音频格式转换(重采样、位深、声道等)、音频编码、多通道播放、音频效果处理等等。
比如,把系统禁音了,系统预警声音发不出,这时候通过 NAudio 可以控制,将声音启用,而且可以调整音量的大小,这样,软件的预警就不受人为改变系统音量而受影响
NAudio安装
注意程序的版本号
手动安装
我的程序是 .Net Framework 4.6 的,NuGET 没安装成功。所以下了 NAudio-
1.10.0 的代码进行了编辑:DLL 下载地址:https://files.cnblogs.com/files/vipsoft/NAudio-1.10.0.zip?t=1737014955&download=true
Nuget安装

常用类:
- WaveIn 表示波形输入, 继承了 IWaveIn, 例如麦克风输入, 或者计算机正在播放的音频流。
- WaveOut 表示波形输出, 继承了 IWavePlayer, 用来播放音频, 以 IWaveProvider 作为播放源播放音频, 通过拓展方法也支持以 - ISampleProvider 作为播放源播放音频。
- WaveStream 表示波形流, 它继承了 IWaveProvider, 可以用来作为播放源。
- WaveFileReader 继承了 WaveStream, 用来读取波形文件。
- WaveFileWriter 继承了Stream, 用来写入文件, 常用于保存音频录制的数据。
- AudioFileReader 通用的音频文件读取器, 可以读取波形文件, 也可以读取其他类型的音频文件例如 Aiff, MP3
常用接口:
- IWaveProvider 波形提供者, 上面已经提到, 是音频播放的提供者, 通过拓展方法可以转换为 ISampleProvider。
- ISampleProvider 采样提供者, 上面已经提到, 通过拓展方法可以作为 WaveOut 的播放源。
代码示例
获取系统是否禁音、当前的系统音量、设置新的音量
using NAudio.CoreAudioApi;
private void CheckSystemMuteState()
{
using (var enumerator = new MMDeviceEnumerator())
{
using (var device = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console))
{
var audioEndpointVolume = device.AudioEndpointVolume;
// 获取当前主音量级别(范围0.0到1.0)
float masterVolumeLevel = audioEndpointVolume.MasterVolumeLevelScalar;
bool isMuted = audioEndpointVolume.Mute;
string msg=$"系统音频是否静音: {isMuted} 当前系统音量{(masterVolumeLevel * 100).ToString("F2")}%";
MessageBox.Show(msg);
//设置音量为 60%
float newVolumeLevel = 0.6f;
audioEndpointVolume.MasterVolumeLevelScalar = newVolumeLevel;
string msg= = $"系统音频是否静音: {isMuted} 当前系统音量{(masterVolumeLevel * 100).ToString("F2")}%";
MessageBox.Show(msg);
}
}
}
C# Winform 通过 NAudio 获取控制电脑操作系统音量的更多相关文章
- Andy - 又一款速度流畅的免费安卓 Android 模拟器 (支持手机无线控制电脑模拟器)
随着 Genymotion.BlueStacks 等电脑上的 Android 模拟器流行起来之后,似乎很多人都发现在电脑上运行使用安卓APP软件.畅玩手机游戏确实很有乐趣. 今天我们又发现了一款全新免 ...
- WinForm(VB.NET)获取当前登录的用户名
运行Windows Task Manager,查看Users标签,可以看到所有登录电脑的用户,现在Insus.NET想命名用VB.NET的WinForm程序去获取当前的用户名. 获取程序简单,可以参考 ...
- C#操作防火墙控制电脑某些软件联网
问题: 目前公司软件刚由单机软件更改为联网软件,许多客户反映希望能够有一个功能来控制电脑上某些必用软件,如qq,公司软件联网,而其他不必要的如网页,游戏等软件不允许联网,于是向公司反映希望可以有一个功 ...
- 学习记录---C# Web程序获取客户端电脑信息
问题描述:由于最近项目需要使用Mac地址与注册码进行加密处理,但是又因为Web程序的局限性不能获取客户端电脑系统信息,当然IE浏览器有一个activex控件他是可以通过Js在前端代码中直接获取的,局限 ...
- .NET 获取客户端的操作系统版本、浏览器版本和IP地址
我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...
- 手机控制电脑,在WIFI局域网下(关机,重启,遥控)
这个软件叫百变遥控:http://blog.sina.com.cn/s/blog_9abc7dbc0101hmut.html 今天周末,在家里看电影,家里用的是台式电脑,我自己买了一个投影仪来专门看视 ...
- .NET获取客户端的操作系统、IP地址、浏览器版本
获取客户端的操作系统: #region 获取操作系统版本号 /// <summary> /// 获取操作系统版本号 /// </summary> /// <returns ...
- asp.net获取浏览器端操作系统名称
/// <summary>/// 获取浏览器端操作系统名称/// </summary>/// <returns></returns>public sta ...
- China Operating System 电脑操作系统 2016全球互联网排名
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 电脑操作系统 China Operating System 2016全球互联网排名 == ...
- 获取ip,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备
/** * 获取ip */ public static function getIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CL ...
随机推荐
- Github第一Star数的国产免费开源防火墙--雷池社区版初步体验
前言 近期准备搭建一个博客网站,用来存储工作室同学们的学习笔记.服务器准备直接放在公网上,方便大家随时随地的上传和浏览,为了防止网站被人日穿成为肉鸡,一些防御措施还是要部署的. 首先明确自己的需求: ...
- .NET Core 反射底层原理浅谈
简介 反射,反射,程序员的快乐. 前期绑定与后期绑定 在.NET中,前期绑定(Early Binding)是指在编译时就确定了对象的类型和方法,而后期绑定(Late Binding)或动态绑定是在运行 ...
- 报错处理TypeError: can't multiply sequence by non-int of type 'float'
在练习格式化输出时出现错误TypeError: can't multiply sequence by non-int of type 'float' 为什么会出现TypeError:不能将序列乘以'f ...
- 怎么理解Condition
原文出处: liuinsect 感谢文章作者@Jd刘锟洋 的投稿.如果其他朋友也希望自己的 Java 和 Android 技术文章发表在 ImportNew,可以微博私信联系@ImportNew,或者 ...
- 源码剖析之sun.misc.Unsafe
首先介绍一下什么是Compare And Swap(CAS)?简单的说就是比较并交换. CAS 操作包含三个操作数 -- 内存位置(V).预期原值(A)和新值(B).如果内存位置的值与预期原值相匹配, ...
- Linux之命令提示神器tldr
github:tldr-pages/tldr: Collaborative cheatsheets for console commands (github.com) 一款很好用的命令帮助工具, 之前 ...
- Mac下的终端高亮显示
默认安装之后Mac下的终端都是一色的黑白,所以需要做一番改造 推荐安装Linux使用的GNU Coreutils替换Mac的ls命令,因为: Coreutils提供了配置工具,定义颜色代码更加方便: ...
- C#/.NET/.NET Core优秀项目和框架2024年11月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...
- FileSaver 文件导出
1.前言 本节主要讲述如何将后台返回的JSON以文件的形式保存到本地 官方文档 兼容性(转载) Browser Constructs as Filenames Max Blob Size Depend ...
- LeetCode721 账户合并
题解 对于\(vector<vector<string>> accounts\),我们定义\(accounts[i]\)为一个列表项.对于\(accounts\)中的一条列表项 ...