在.NET下使用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系统波形声音的左右声道,高位为左声道,低位为右声道:
[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 << );
int retVal = WaveOutSetVolume(IntPtr.Zero, vAll);
}
2.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 = ; i < ; 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
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();
参考:
1.Win Api winmm.dll http://msdn.microsoft.com/zh-cn/subscriptions/downloads/ms713762(v=vs.85).aspx
2.Win Api user32.dll http://www.cnblogs.com/ju2ender/archive/2010/12/21/1913025.html
3.CoreAudioApi http://www.codeproject.com/Articles/18520/Vista-Core-Audio-API-Master-Volume-Control
在.NET下使用C# 控制Windows系统音量的更多相关文章
- C#实现控制Windows系统关机、重启和注销的方法:
shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...
- C#实现控制Windows系统关机、重启和注销的方法
shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...
- 使用Kali中的Metasploit生成木马控制Windows系统 (第九天 9.20)
本文转自:https://www.cnblogs.com/yankaohaitaiwei/p/11556921.html 一.kali及Metasploit kali基于debin的数字取证系统,上面 ...
- Linux下使用VirtualBox安装Windows系统
(文档比较长,只是写的详细,实际操作起来相对简单.) 由于一些特殊原因,我们并不能完全抛下Windows而使用Linux.VirtualBox 是一款虚拟机软件,支持多系统.在Linux下安装 Vir ...
- 使用Kali中的Metasploit生成木马控制Windows系统
一.概念:Kali基于debin的数字取证系统,上面集成了很多渗透测试工具,其前身是BT5 R3(BtackTrack). 其中Metasploit是一个综合利用工具,极大的提高了攻击者的渗透效率,使 ...
- 无光驱在32位windows系统下安装64位windows系统
位的系统. 大家都知道,32位的操作系统最多只能支持3.2G的内存,现在内存白菜价,很多人都在原有基础上购入新内存,这样最少也有4G了,为了让内存不浪费,我 们只有升级到64位操作系统.但是很多朋友又 ...
- deepin下挂载的的Windows系统(NTFC)目录怎么是只读的???
关键命令: df-h sudo ntfsfix /dev/sda4 重启 参考博客:深度官网问题之大神回复
- windows系统下安装MySQL
可以运行在本地windows版本的MySQL数据库程 序自从3.21版以后已经可以从MySQL AB公司获得,而且 MYSQL每日的下载百分比非常大.这部分描述在windows上安装MySQL的过程. ...
- MySQL数据库在WINDOWS系统CMD下的编码问题
MySQL数据库在WINDOWS系统CMD下的编码问题 1. 查看MySQL数据库编码 * SHOW VARIABLES LIKE 'char%'; 2. 编码解释 * character_set_c ...
随机推荐
- html checkbox 全选与反选
之所以记录这个博客,是因为我完全用jquery,无法实现自己想要的结果(通过一个checkbox的选中或不选中控制其他多个checkbox状态) <input type="checkb ...
- C/C+小记
1.struct与typedef struct struct Student{int a;int b}stu1; //定义名为Student的结构体,及一个Student变量stu1 struct { ...
- vim tab 和4个空格
在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:set ts=4 (注:ts是tabstop的缩写,设TAB宽4个空格)set expandtab 对于已保存的文件,可以使用 ...
- CNN 美国有线电视新闻网 wapCNN WAP 指无线应用通讯协议 ---- 美国有线电视新闻网 的无线应用
wapCNN wap指无线应用通讯协议 CNN美国有线电视新闻网 固, wapCNN 美国有线电视新闻网的无线应用 -------------------------------------- ...
- gvim-ide plugins
omnicppcomplete-0.41.zip after: ftplugin: c.vim,cpp.vim,两个文件的内容相同, 其中都只有一个call语句: call omni#cpp#comp ...
- Linux 解压命令tar的理解
今天回顾了下tar 这个打包工具的一些常用参数 选项与参数: -c :创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename) -t :察看打包文件的内容含有哪些档名,重点在察看『档名 ...
- javascript滚动条之ScrollBar.js
ScrollBar.js是一个仅仅120行的滚动条JS插件,使用非常方便 详情阅读:https://git.oschina.net/wuquanyao/scrollbar.js/*========== ...
- 让chrome浏览器变成在线编辑器
在大部分人眼里,技术宅给人的印象是沉默寡言,总摸不透他心里想些什么,彼此都保持距离.作为半个程序员,我觉得真正的技术宅大部分时间都在找乐子,鼓捣各种想法,和大部分人的极客心理是一样的,程序员也还爱讲笑 ...
- 小白科普之JavaScript的数组
一.与其他语言数据的比较 相同点:有序列表 不同点:js的数组的每一项可以保存任何类型的数据:数组的大小是可以动态调整的 二.数组创建的两种方法 1) var colors = new ...
- Slider插件(滑动条,拉链)
Slider插件(滑动条,拉链) 下载地址:http://files.cnblogs.com/elves/Slider.rar 提示:微软AJAX插件中也带此效果!