源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-05-22 16:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用C# 控制Windows系统音量的实现方法
[b]C#开发Windows应用程序中经常需要去控制系统的音量,分两种方式:[/b] 1.使用Win Api控制 2.使用C++ dll控制 [b]Win Api控制:[/b]   使用user32.dll和winmm.dll都可以控制系统音量,区别是Win系统的版本。winmm.dll Xp环境下可用,user32.dll Vista及以上版本。 [b]C++ dll控制:[/b]   CoreAudioApi 是C++ 第三方封装了音量控制,网上下载DLL后再项目中引用即可使用。CoreAudioApi Vista及以上版本支持。 [b]下面给出代码[/b] [b]1.winmm控制方式,涉及Xp系统波形声音的左右声道,高位为左声道,低位为右声道: [/b]
[u]复制代码[/u] 代码如下:
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);  }
[b]2.user32控制方式: [/b]
[u]复制代码[/u] 代码如下:
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;
[b]3.CoreAudioApi [/b]
[u]复制代码[/u] 代码如下:
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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部