使用 C# 在 Windows 10 上控制左右扬声器平衡级别

Posted

技术标签:

【中文标题】使用 C# 在 Windows 10 上控制左右扬声器平衡级别【英文标题】:Control left & right speaker balance level on Windows 10 using C# 【发布时间】:2018-10-01 10:33:07 【问题描述】:

我需要使用我的 C# 应用程序控制 Windows 10 上的左右扬声器平衡级别。

我能够使用 Windows IAudioEndpointVolume interface 通过 Audio Manager C# wrapper 控制扬声器和麦克风的主音量级别,http://***.com/questions/14306048/controling-volume-mixer 中也提到了这一点。

但是,我仍然无法控制 L/R 平衡。我应该使用任何特定的接口或属性吗?

windows-audio-speaker-balance settings

我正在通过 Visual Studio 15 使用 Windows 10 SDK 和 .NET 4.6.1 框架构建控制台应用程序

【问题讨论】:

【参考方案1】:

使用 IAudioEndpointVolume 中的 SetChannelVolumeLevel(或 SetChannelVolumeLevelScalar)方法。

SetChannelVolumeLevel:https://docs.microsoft.com/en-us/windows/desktop/api/endpointvolume/nf-endpointvolume-iaudioendpointvolume-setchannelvolumelevel

SetChannelVolumeLevelScalar:https://docs.microsoft.com/en-us/windows/desktop/api/endpointvolume/nf-endpointvolume-iaudioendpointvolume-setchannelvolumelevelscalar

【讨论】:

谢谢@Wokuo。我在发布之前已经尝试过这个端点,但是我给LPCGUID pguidEventContext 提供了错误的值。它在为 EventContext 传递 Guid.Empty 后工作。另外,通道 0 表示左 1 右 @DhammikaMarasinghe 这个解决方案可行,但有点难看。更好的解决方案是使用静态 Guid。此指南用于识别谁更改了音量,特别是您可以定义音量是由您的应用程序还是由系统设置更改。您可以在这里找到更多详细信息:docs.microsoft.com/pl-pl/windows/desktop/api/endpointvolume/…

以上是关于使用 C# 在 Windows 10 上控制左右扬声器平衡级别的主要内容,如果未能解决你的问题,请参考以下文章

剪贴板在 C# 控制台应用程序上不起作用 [重复]

达人评测 联想扬天V14 2021怎么样

如何从 C# Windows 应用程序控制 Windows 10 移动热点设置 [重复]

Win10 IoT C#开发 2 - GPIO Pin 控制发光二极管

C#:控制台输出无限(∞)[关闭]

c#的timer控件计时不够准确,有啥办法可以替代吗,我需要10ms左右的精度,但是timer很不准确