【问题标题】:Controlling volume in C# using WMPLib in Windows在 C# 中使用 Windows 中的 WMPLib 控制音量
【发布时间】:2023-03-26 21:47:01
【问题描述】:

故事: 我正在编写一个由语音控制的音乐播放器。以前,该项目使用 winamp 播放音乐——我想取消它。我想将语音控制与音乐播放器集成。问题是,当更改我的媒体播放器对象 (mplayer.settings.volume = 5;) 的音量属性时,它会更改 MASTER 音量。这意味着在播放音乐时任何语音反馈都将完全听不见。开车的时候不爽。如果我启动 windows 媒体播放器,我可以在不影响主音量的情况下改变音乐的音量。所以必须有办法。

我曾想过可能会找出其中是否隐藏了均衡器控件,但是有关此的文档很可悲。 -- 要么是那个,要么是我的 google-fu 很弱。

那么有谁知道我将如何使用 Windows 媒体播放器控制分离主音量和音乐音量?

详情: 目标机器是 XP(sp3),我相信是 .NET 4.0。此外,这是一个控制台应用程序。

提前感谢您的帮助

【问题讨论】:

    标签: c# media volume


    【解决方案1】:

    我已经在 Windows Media Player VER 12 中对此进行了测试,所以我想对于大多数人来说,有一个比使用“user32.dll”更简单的方法:

    private static WMPLib.WindowsMediaPlayer Player;
    
    public static void VolumeUp()
    {
        if (Player.settings.volume < 90)
        {
            Player.settings.volume = (Player.settings.volume + 10);
        }
    }
    
    public static void VolumeDown()
    {
        if (Player.settings.volume > 1)
        {
            Player.settings.volume = (Player.settings.volume - (Player.settings.volume / 2));
        }
    }
    

    毫无疑问,这已经支持了一段时间了。它不会更改主音量,仅更改媒体播放器音量。 Windows 主卷不受影响。

    希望这对不限于 XP SP3 的其他人有所帮助。

    【讨论】:

      【解决方案2】:

      我发现这样做的唯一方法是使用 Interop 和 WM_APPCOMMAND windows 消息:

          private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
          private const int WM_APPCOMMAND = 0x319;
          private const int APPCOMMAND_MICROPHONE_VOLUME_UP = 26 * 65536;
          private const int APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25 * 65536;
      
          [DllImport("user32.dll")]
          public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
          private void SetMicVolume()
          {
              SendMessageW(new WindowInteropHelper(this).Handle, WM_APPCOMMAND, new (IntPtr)APPCOMMAND_MICROPHONE_VOLUME_UP);//or _DOWN
          }
      

      【讨论】:

      • 我还没有尝试过(忙等),但当你说这是唯一的方法时,我相信你。鉴于 google 上没有搜索结果,而且您​​是唯一一个回复的人。 (感谢您这样做)
      猜你喜欢
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2012-04-25
      相关资源
      最近更新 更多