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();

时间: 2013-05-14

vs中程序获取计算机系统音量,用C# 控制Windows系统音量的实现方法相关推荐

  1. java控制系统音量_Java 控制 Windows 系统音量-Go语言中文社区

    目录 1.使用 Java 来控制 Windows 系统音量,使用 JNA 调用 windows 底层 API 因为有点麻烦,所以这里采用纯 Java API结合 VBS 脚本的方式进行控制. 2.可以 ...

  2. 控制windows系统音量

    网上有一些控制系统音量的方法: win xp系统可以用mixerOpen等方式: win 7系统可以用wsapi等方式:WASAPI的全称是Windows Audio Session API(Wind ...

  3. 需求:解压获取ipa里面的图片在windows系统上打不开

    需求:解压获取ipa里面的图片资源在windows系统上竟然打不开,何解? 想参考第三方的app里面的图片资源,但不知道为神马从ipa文件提取出来的png图片在mac上可以打开,而发送到window上 ...

  4. NSIS(Nullsoft Scriptable Install System)开源安装程序制作软件使用详细步骤(Windows系统下)

    NSIS(Nullsoft Scriptable Install System)开源安装程序制作软件使用详细步骤(Windows系统下)安装包制作 1.软件详情 软件版本 版本说明 翻译跟进 2.教程 ...

  5. 微信小程序获取Onenet温湿度数据并控制灯亮灭

    ​ 其实之前就写过类似的文章,但是看过我博客的朋友就知道,我是先写微信小程序获取onenet,然后再写esp32上云到onenet.一篇是ESP32-C3通过MQTT协议把温湿度上传到OneNet平台 ...

  6. android多屏应用程序,微软也尝试“多屏协同” Windows系统可以运行安卓程序

    原标题:微软也尝试"多屏协同" Windows系统可以运行安卓程序 [环球网科技综合报道]一直以来人们希望手机和电脑能更好的协作,来帮助提高生产力,但是因为电脑的系统和手机操作系统 ...

  7. C# Windows系统音量调节Demo源码

    基于.NET Framework 4.0开发,包含滑块设置音量,键盘F1.F2调节音量. 通过滑块调节系统音量核心代码 /// <summary>/// 滑块设置音量/// </su ...

  8. electron调节windows系统音量解决方案

    借助NirCmd的能力 官方地址 下载地址 使用NirCmd的相应命令 将音量设为最高值 nircmd.exe setsysvolume 65535 静音 nircmd.exe mutesysvolu ...

  9. 当windows 7系统中程序和功能无法卸载IE9,10,11时的方法

    1.首先进入打开这个 C:\Windows\TEMP\ 文件夹,将里面的所有文件都清空了. 2.依次点击"开始"-"所有程序"-"附件",右 ...

  10. win7中计算机被改为了句号,如果不用windows系统还可以用什么桌面操作系统 桌面操作系统更换指南...

    腾讯视频/爱奇艺/优酷/外卖 充值4折起 在过去的几年里,微软对于桌面操作系统市场的压制已经开始松懈,如果你厌倦了一成不变的Windows XP,或者是无法接受拥有两个彼此独立模式的Windows8, ...

最新文章

  1. Scala Learn 1 Basic
  2. 湮灭尽头的一点光---炮粒子
  3. AS插件-android-selector-chapek
  4. 【STM32】中断相关函数和类型
  5. xml android 字体,自定义字体和XML布局(Android)
  6. java的重写、重载、覆盖的差别
  7. java派生类_我可以使派生类从Java的基类继承派生成员...
  8. 网易邮箱写邮件HTML转换按钮,网易邮箱推出虚拟场景写信功能 身临其境写邮件...
  9. Mars 如何分布式地执行
  10. spark将rdd转为string_八、Spark之详解Tranformation算子
  11. c# reverse_清单 .Reverse()方法,以C#为例
  12. 漫画让你秒懂5G黑科技....
  13. ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
  14. 2022年P气瓶充装考试模拟100题模拟考试平台操作
  15. 1128: mxh道歉记
  16. 管理的常识(2):什么是领导
  17. xls和xlsx的区别
  18. 在vue项目中使用echarts 阿星小栈
  19. 第一章:机器学习概览
  20. Flume之生产正确的使用方式一(Singel Agent)

热门文章

  1. 未来城市插画mac动态桌面壁纸
  2. RISC-V MCU 应用教程之RTC自动唤醒
  3. VS2017 错误 LNK2005
  4. Http GET 请求参数中文乱码
  5. 阐述SDN的原理、SDN使用场景、SDN技术的优缺点、SDN发展现状及分析SDN对社会和环境的影响
  6. 全民K歌神器,这款麦克风唱享高音质体验
  7. 利用FFmpegFrameGrabber截取视频中的某一帧图片压缩并旋转
  8. 用python计算100以内所有奇数的和_Python-while 计算100以内奇数和的方法
  9. python打印网页成pdf_html – 在chrome-python 2.7中自动打印/保存网页为pdf
  10. 创业不难,找准项目才难,教你一眼识破好项目