首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中设置系统卷Windows 10

在C#中设置系统卷Windows 10
EN

Stack Overflow用户
提问于 2016-02-24 08:56:46
回答 3查看 8.4K关注 0票数 0

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

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

我需要哪个Libary?

我正在使用Visual 2015,并想用C#编写一个。

该方案应能够:

  • 将系统卷设置为x%
  • 将系统卷增加x
  • 将系统卷减少x
  • 获取当前系统卷

我发现了一个类似的问题和答案,但答案是行不通的。

私有void (){

代码语言:javascript
复制
        SendMessageW(new WindowInteropHelper(this).Handle, WM_APPCOMMAND, new WindowInteropHelper(this).Handle,
            (IntPtr)APPCOMMAND_VOLUME_MUTE);
    }

它找不到"WindowInteropHelper“。但我执行:

使用系统;

使用System.Windows.Forms;

使用System.Runtime.InteropServices;

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-03 14:10:01

代码语言:javascript
复制
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度。

我仍然在寻找一种获得当前系统卷的方法。

票数 4
EN

Stack Overflow用户

发布于 2016-02-24 09:07:57

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

票数 1
EN

Stack Overflow用户

发布于 2016-12-15 22:15:54

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

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

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

然后,通过cmd调用它:

Run Command Prompt Commands

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

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

realativePath/nircmd.exe setsys卷x

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35597458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档