C# 二种方法控制系统音量/麦克风大小
场景:在做播放设备的时候需要控制音量的大小,下面几种方法将满足你的要求
方法一: 改变系统音量设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
[DllImport( "user32.dll" )]
static extern void keybd_event( byte bVk, byte bScan, UInt32 dwFlags, UInt32 dwExtraInfo);
[DllImport( "user32.dll" )]
static extern Byte MapVirtualKey(UInt32 uCode, UInt32 uMapType);
private const byte VK_VOLUME_MUTE = 0xAD ;
private const byte VK_VOLUME_DOWN = 0xAE ;
private const byte VK_VOLUME_UP = 0xAF ;
private const UInt32 KEYEVENTF_EXTENDEDKEY = 0x0001 ;
private const UInt32 KEYEVENTF_KEYUP = 0x0002 ;
/// <summary>
/// 改变系统音量大小,增加
/// </summary>
public void VolumeUp()
{
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0 ), KEYEVENTF_EXTENDEDKEY, 0 );
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0 ), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 );
}
/// <summary>
/// 改变系统音量大小,减小
/// </summary>
public void VolumeDown()
{
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0 ), KEYEVENTF_EXTENDEDKEY, 0 );
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0 ), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 );
}
/// <summary>
/// 改变系统音量大小,静音
/// </summary>
public void Mute()
{
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0 ), KEYEVENTF_EXTENDEDKEY, 0 );
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0 ), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 );
}
|
方法二: 改变程序音量,但不改变系统音量设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
[DllImport( "Winmm.dll" )]
private static extern int waveOutSetVolume( int hwo, System.UInt32 pdwVolume);
[DllImport( "Winmm.dll" )]
private static extern uint waveOutGetVolume( int hwo, out System.UInt32 pdwVolume);
#region
private int volumeMinScope = 0 ;
private int volumeMaxScope = 100 ;
private int volumeSize = 100 ;
/// <summary>
/// 音量控制,但不改变系统音量设置
/// </summary>
public int VolumeSize
{
get { return volumeSize; }
set { volumeSize = value; }
}
public void SetCurrentVolume()
{
if (volumeSize < 0 )
{
volumeSize = 0 ;
}
if (volumeSize > 100 )
{
volumeSize = 100 ;
}
System.UInt32 Value = (System.UInt32)(( double ) 0xffff * ( double )volumeSize / ( double )(volumeMaxScope - v
olumeMinScope)); //先把trackbar的value值映射到0x0000~0xFFFF范围
//限制value的取值范围
if (Value < 0 )
{
Value = 0 ;
}
if (Value > 0xffff )
{
Value = 0xffff ;
}
System.UInt32 left = (System.UInt32)Value; //左声道音量
System.UInt32 right = (System.UInt32)Value; //右
waveOutSetVolume( 0 , left << 16 | right); //"<<"左移,“|”逻辑或运算
}
|
转载于:https://www.cnblogs.com/gc2013/p/4259981.html
C# 二种方法控制系统音量/麦克风大小相关推荐
- debian7更换gcc版本的二种方法分享
debian7更换gcc版本的二种方法分享 最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默 ...
- mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法
mysql 远程连接数据库的二种方法 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"roo ...
- oracle 数据导入 mysql_oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)...
这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...
- oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...
- java获取当前日期和时间的二种方法分享
有两种方法: 方法一:用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化,看下面代码: import java.util.*; import j ...
- mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法 | 速光网络博客...
一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"root",密码"123 ...
- asp教程连接sql server数据库教程二种方法
asp教程连接sql server数据库教程二种方法 ,sql server ole db连接方法:,本人链接sql2012已经成功,想可以帮助大家 本教程主要是讲了asp与mssql server ...
- python二叉树广度遍历_黄哥Python: 二叉树的广度优先搜索的二种方法
特别提示,转行的朋友,2019年不学习数据结构和算法,不刷Leetcode 等面试题库,是找不到程序员工作或者说找不到好的工作.黄哥:黄哥Python:提醒要转行当程序员的朋友,学习要分先后主次zh ...
- Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法)
Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法) 目录 Unity UGUI 之 实现 Text 文本文字过长,省略号显示(Te ...
最新文章
- 两周后上线,老板你在开玩笑吗?
- 使用迭代器遍历List的时候修改List报ConcurrentModificationException异常原因分析
- 初学者python用哪个版本好-python用哪个版本好
- STL_set集合容器+map映照容器
- iOS AppStore 申请加急审核
- (chap8 确认访问用户身份的认证) DIGES认证(摘要认证)
- STM32G071RB CubeMX ADC TIM DMA
- python37安装opencv41_Vs2019+opencv4.1.0+python3.7,包安装,vs2019opencv410python37,程序包
- Skynet 游戏服务器开发实战
- 【机器学习】传统目标检测算法之DPM
- 【HDU - 1078】FatMouse and Cheese (记忆化搜索dp)
- 《极品飞车12》官方网站公布发售日
- 宁德技校学计算机报名,你知道现在宁德市师范学校计算机报2012年的考试开始报名了吗,怎样报名啊...
- 信息学奥赛一本通(1223:An Easy Problem)
- Zygo保存zxg(Zemax File)文件(光学领域知道Zygo的一定要看)
- java children_java构建树形列表(带children属性)
- 华硕门店点亮系统_6大关键赋能,点亮导购服务力!
- windows 下 CUDA 并行编程环境搭建
- Hightopo 2D 入门
- Windows出现“未连接到互联网代理服务器出现问题,或者地址有误。问题解决办法”
热门文章
- ubuntu创建新用户名和密码以及查看删除用户
- C++ STL (四)set使用
- 计算机在有机合成中的应用,计算机在有机合成中的应用
- jquery日历插件 途牛_jquery日历插件SimpleCalendar
- 计算机word表格居中,word表格居中怎么弄
- python函数内部变量能改变外部吗_python中,如何利用函数修改外部变量,注意我的要求...
- php bdecode,PHP base64_encode和base64_decode 编码/解码url
- 如何网络推广教大家怎样通过提高用户粘性来助力排名提升?
- 网络推广下叮咚买菜已完成D轮融资,生鲜电商下一次融资又在何方?
- 优化网站设计方案提升网站用户回头率