在 C# 中设置系统音量 Windows 10

Set System Volume Windows 10 in C#

我搜索了几个小时,现在我在这个论坛里问。

如何控制 Windows10 的系统音量设置?

我需要哪个库?

我正在使用 Visual Basic 2015,想用 C# 编写 Windows 通用应用程序。

程序应该能够:

我找到了类似的问题和答案,但答案不起作用。

私人无效静音() {

        SendMessageW(new WindowInteropHelper(this).Handle, WM_APPCOMMAND, new WindowInteropHelper(this).Handle,
            (IntPtr)APPCOMMAND_VOLUME_MUTE);
    }

找不到 "WindowInteropHelper"。但是我实现了:

使用系统;

使用 System.Windows.Forms;

使用 System.Runtime.InteropServices;

你不能那样做。通用应用程序是沙盒的,不能对系统进行全局修改。这包括系统卷。

class VolumeChanger
{
  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;

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

  public static 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);
  }

  public static 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);
  }

  public static 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);
  }
}

使用这个,你可以静音,增加或减少系统音量2度。

我仍在寻找获取当前系统卷的方法。

我相信有一种使用 nircmd 的方法。

首先下载nircmd并附加到项目中:

http://www.nirsoft.net/utils/nircmd.html

然后,通过cmd调用它:

Run Command Prompt Commands

nircmd 网站上有你想要的命令。

例如,要将音量更改为 x%,请使用:

realativePath/nircmd.exe setsysvolume x