在C#中设置系统卷Windows 10

时间:2016-02-24 08:56:47

标签: c# audio win-universal-app volume

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

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

我需要哪个图书馆?

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

该程序应该能够:

  • 将Systemvolume设置为x%

  • 按x

  • 增加Systemvolume
  • 按x

  • 减少Systemvolume
  • 获取当前的Systemvolume

我发现了一个类似的问答,但答案却没有找到工作。

private void Mute()         {

if (isset($this->name[Context::getContext()->language->id]))
    $id_lang = Context::getContext()->language->id;
else
    $id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$subcategories = $category->getSubCategories($id_lang, true);

它无法找到" WindowInteropHelper"。但我实施了:

使用System;

使用System.Windows.Forms;

使用System.Runtime.InteropServices;

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

使用此功能,您可以将Systemvolume静音,增加或减少2度。

我仍在寻找获得当前Systemvolume的方法。

答案 2 :(得分:0)

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

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

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

然后,通过cmd:

调用它

Run Command Prompt Commands

您想要的命令在nircmd网站中指定。

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

realativePath / nircmd.exe setsysvolume x