用C# 控制Windows系统音量的实现方法

C#开发Windows应用程序中经常需要去控制系统的音量,分两种方式:

1.使用Win Api控制

2.使用C++ dll控制

Win Api控制:

  使用user32.dll和winmm.dll都可以控制系统音量,区别是Win系统的版本。winmm.dll Xp环境下可用,user32.dll Vista及以上版本。

C++ dll控制:

  CoreAudioApi 是C++ 第三方封装了音量控制,网上下载DLL后再项目中引用即可使用。CoreAudioApi Vista及以上版本支持。

下面给出代码

1.winmm控制方式,涉及Xp系统波形声音的左右声道,高位为左声道,低位为右声道:


代码如下:

winmm
 [DllImport("winmm.dll", EntryPoint = "waveOutSetVolume")]
 public static extern int WaveOutSetVolume(IntPtr hwo, uint dwVolume);

private void SetVol(double arg){
     double newVolume = ushort.MaxValue * arg / 10.0;

uint v = ((uint)newVolume) & 0xffff;
     uint vAll = v | (v << 16);

int retVal = WaveOutSetVolume(IntPtr.Zero, vAll);
 }

2.user32控制方式:


代码如下:

user32
 [DllImport("user32.dll")]
 public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

public void SetVol(){
     p = Process.GetCurrentProcess();
     for (int i = 0; i < 5; i++) {
     SendMessageW(p.Handle, WM_APPCOMMAND, p.Handle, (IntPtr)APPCOMMAND_VOLUME_UP);
     }
 }

private Process p;
 private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
 private const int APPCOMMAND_VOLUME_UP = 0x0a0000;
 private const int APPCOMMAND_VOLUME_DOWN = 0x090000;
 private const int WM_APPCOMMAND = 0x319;

3.CoreAudioApi


代码如下:

CoreAudioApi
 Using CoreAudioApi;

public void SetVol(double arg) {
     device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
     device.AudioEndpointVolume.MasterVolumeLevelScalar = (float)arg;
 }

private MMDevice device;
 private MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();

(0)

相关推荐

  • C#语音识别用法实例

    本文实例讲述了C#语音识别用法.分享给大家供大家参考.具体分析如下: C#可以利用微软操作系统自动的语音识别功能,读取信息.步骤如下: 1.  在项目中添加  ""  引用 2.  引入命名空间: 复制代码 代码如下: using SpeechLib; 3.  读取的代码: 复制代码 代码如下: SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;     SpVoice voice = new SpVoic

  • C#播放背景音乐的方法小结

    本文实例总结了C#播放背景音乐的方法.分享给大家供大家参考.具体分析如下: 最经在写winform程序,其中有用到播放背景音乐 特此收集了一些网上的教程: 1.调用非托管的dll using System.Runtime.InteropServices; //DllImport命名空间的引用 class test //提示音 { [DllImport("winmm.dll")] public static extern bool PlaySound(String Filename,in

  • 教你如何用C#制作文字转换成声音程序

    教你如何用C#制作文字转换成声音程序 在System.Speech命名空间下,SpeechSynthesizer类可以把文字读出来,一起来玩下~~ 首先在Windows窗体项目中引入System.Speech.界面部分: 后台代码也很简单,只不过调用了SpeechSynthesizer类的一些方法: using System.Windows.Forms; using System.Speech; using System.Speech.Synthesis; namespace WindowsFo

  • C#实现通过winmm.dll控制声音播放的方法

    本文以实例介绍了C#如何通过winmm.dll来播放声音,主要实现步骤如下: 1.首先导入如下两个函数: /// <summary> /// 向媒体控制接口发送控制命令 /// </summary> /// <param name="lpszCommand">命令,参见 /// http://msdn.microsoft.com/en-us/library/windows/desktop/dd743572(v=vs.85).aspx </par

  • C# 语音功能的实现方法

    首先要安装SpeechSDK5.1 开发包和SpeechSDK5.1 Langague Pack(中英文) 语言包,不过VS2010里是自带SpeechSDK5.0的com组件的,也可以用. 简单讲一下四个方法: 朗读时,使用 复制代码 代码如下: voice.Speak(string,SpeechVoiceSpeakFlags.SVSFlagsAsync); 暂停,使用 复制代码 代码如下: voice.Pause(); 从暂停中继续刚才的朗读,使用 复制代码 代码如下: voice.Resu

  • C#实现基于加减按钮形式控制系统音量及静音的方法

    本文实例讲述了C#实现基于加减按钮形式控制系统音量及静音的方法.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices

  • C#实现用于操作wav声音文件的类实例

    本文实例讲述了C#实现用于操作wav声音文件的类.分享给大家供大家参考.具体如下: 有了这个C#类,我们可以很轻易的调用本地wav文件进行同步播放或者异步播放,大大简化了对wav文件的操作过程,如果你需要在项目中调用wav文件进行声音播放,可以使用这个C#类. using System; using System.Media; namespace DotNet.Utilities { /// <summary> /// 处理多媒体的公共类 /// </summary> public

  • 基于C#的音乐播放器主Form实现代码

    本文所述为一个由C#编写的音乐播放器的主Form代码,里面有一些小技巧还是不错的,现共享给大家参考一下.里面有播放器背景设置.线程定义.调用读取文件目录方法.播放时间计数器.设置LV背景.获取播放歌曲.播放按钮,切换播放or暂停.切换歌曲到下一首,调用切歌方法.显示播放列表.歌词局中.播放窗体最小化隐藏到托盘设置.进度条滚动模块.从歌曲列表中删除文件等等功能.且各个功能模板均备有较为详细的注释,便于大家阅读理解. 程序主要代码如下: using System; using System.Coll

  • 用C# 控制Windows系统音量的实现方法

    C#开发Windows应用程序中经常需要去控制系统的音量,分两种方式: 1.使用Win Api控制 2.使用C++ dll控制 Win Api控制: 使用user32.dll和winmm.dll都可以控制系统音量,区别是Win系统的版本.winmm.dll Xp环境下可用,user32.dll Vista及以上版本. C++ dll控制: CoreAudioApi 是C++ 第三方封装了音量控制,网上下载DLL后再项目中引用即可使用.CoreAudioApi Vista及以上版本支持. 下面给出

  • C#实现控制Windows系统关机、重启和注销的方法

    本文实例讲述了C#实现控制Windows系统关机.重启和注销的方法.分享给大家供大家参考.具体分析如下: 使用.NET和C#.NET,我们可以对当前PC执行关机,重启,注销操作. NET Framework中,有一个命名空间System.Diagnostics具有所需的类和方法,从当前PC上运行.NET应用程序来执行这些操作. 请使用下面的按钮来执行关机,重启和注销. 下面是一个winform程序 //SHUT DOWN protected void btnShutDown_Click(obje

  • Windows 系统 PostgreSQL 手工安装配置方法

    自从2020年底开始接触 PostgreSQL 以来就喜欢上了这个数据库,个人感觉比 MySQL 好用,多表联合查询性能好很多,同时也不存在 SQLServer 的版权授权费用问题.搭配 .NET 开发很好用,目前手里的项目全部都是采用 PostgreSQL 进行数据支撑的. 本文主要说一下在 Windows 系统中安装 PostgreSQL 的方法,我这里没有采用 exe 安装包的形式去安装,EDB 发布的那个 exe 安装包形式的对于中文环境数据库的排序规则设定有问题,所以我采用了官方 ZI

  • Mysql在Windows系统快速安装部署方法(绿色免安装版)

    首先下载MySQL的是绿色免安装版,放到随便一个文件夹也可以,这次我直接放在了C盘 步骤: 1.将my-default.ini(ini如果没有后缀就是my-default) 复制后改名为my.ini(ini如果没有后缀就是my),然后复制以下内容把原来的内容全替换掉 [mysql] default-character-set=utf8 [mysqld] #设置3306端口 port=3306 #系统基本目录 basedir=C:/mysql-5.6 #用户数据目录 datadir=C:/mysq

  • 易语言中系统音量的使用方法

    大家在学习易语言中,可能会制作一些播放器之类的软件时,一般会有系统音量的设置,调节系统音量的大小.今天我就教大家如何实现这个功能,希望能对大家有所帮助. 1.首先打开易语言,创建windows窗口程序. 2.在扩展组件中找到系统音量,拖动并创建. 3.依据个人需求设计页面,如下图所示. 1.调试工作 双击启动窗口,输入下图源码.其中的设备标识在音量类型中依据个人需求选择. 2.为了了解一些数值,我们写下下图的源码进行调试. 3.按下F5进行调试,然后查看结果. 1.核心工作 我们发现65535这

  • Git客户端TortoiseGit(Windows系统)的使用方法

    本文环境: 操作系统:Windows XP SP3 Git客户端:TortoiseGit-1.8.8.0-32bit 一.安装Git客户端 全部安装均采用默认! 1. 安装支撑软件 msysgit: https://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git 当前最新版本为v1.9.0. 2. 安装TortoiseGit 首先,要安装Windows Installer 4.5. 然后,安装Torto

  • PowerShell小技巧之获取Windows系统密码Hash

    当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战果,你首先需要做的就是潜伏下来,收集更多的信息便于你判断,便于有更大的收获.用什么方法才能有尽可能高的权限,同时能更有效的隐藏自己,是留webshell,留后门,种木马还是Rootkit?webshell,哪怕是一句话木马都很容易被管理员清除,放了木马,也容易被有经验的管理员查出,不管是早期自己创建进程,进程被干掉就完了,还是注入进程的木马,或者是以服务自启动的木马

  • C#中控制远程计算机的服务的方法

    在.net中提供了一些类来显示和控制Windows系统上的服务,并可以实现对远程计算机服务服务的访问,如System.ServiceProcess命名空间下面的ServiceController 类,System.Management下面的一些WMI操作的类.虽然用ServiceController可以很方便的实现对服务的控制,而且很直观.简洁和容易理解.但是我认为他的功能同通过WMI来操作服务相比,那可能就有些单一了,并且对多个服务的操作可能就比较麻烦,也无法列出系统中的所有服务的具体数据.这

  • iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)

    如图,左侧上下滑动改变亮度,右侧上下滑动改变音量. 1.改变屏幕亮度 //获得当前屏幕亮度 light = [UIScreen mainScreen].brightness; light = 0.5f; //直接赋值或者使用set方法皆可 [UIScreen mainScreen].brightness = light; 2.改变系统音量 使用的比较多的就是通过MPMusicPlayerController来改变系统音量,主要归功于MPMusicPlayerController的音量和系统的同步

  • 在Windows系统下使用PHP生成Word文档的教程

    准备工作 首先,请确保在你的Windows系统中已经安装并配置好了一个典型的WAMP环境.由于Interop纯粹是一个Windows的特性,我们将在Windows平台下搭建Apache和PHP.在这个实例中,我使用了EasyPHP 14.1,这款软件安装和配置都十分容易. 接下来,我们要安装Microsoft Office.版本不是严格要求的.我正在使用的是Office2013专业版,但是任何2007之后的Office版本都应该可以使用. 我们然后需要去确保开发Interop应用(又被称作PIA

随机推荐