C# 获取主音量级别/百分比

标签 c# .net

我得到了这个代码来使主音量静音/取消静音

private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int WM_APPCOMMAND = 0x319;

[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_MUTE);

我想知道如何获得主音量级别/百分比,因为我想知道声音是否已经静音。

编辑: 否则我想拆分静音/取消静音,这样我将有两个功能 - 一个用于静音,一个用于取消静音。

谢谢

最佳答案

看看这个项目http://www.codeproject.com/KB/vista/CoreAudio.aspx

他们创建了自己的混音器控件,该控件还报告当前音量和静音/取消静音状态:

defaultDevice.AudioEndpointVolume.OnVolumeNotification += new AudioEndpointVolumeNotificationDelegate(
    AudioEndpointVolume_OnVolumeNotification);
// .. snip ..
void AudioEndpointVolume_OnVolumeNotification(AudioVolumeNotificationData data)
{
    Console.WriteLine("New Volume {0}", data.MasterVolume);
    Console.WriteLine("Muted      {0}", data.Muted);
}

这对你有帮助吗?

编辑:使用此代码和项目中的类,您应该能够直接设置和取消设置静音(无需切换):

MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
MMDevice defaultDevice = devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
defaultDevice.AudioEndpointVolume.Mute = true; // or false

关于C# 获取主音量级别/百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235246/

相关文章:

.net - MEF:将类型与对象一起注入(inject)?

c# - 如何使用 Json.NET.Schema 要求属性?

c# - DELETE 方法似乎什么都不做

c# - 如何根据行对象是否是 viewModel 上可用的另一个集合的一部分来更改 GridView 行背景

c# - 选择 -> 组 -> 订单 -> 在一个存储库功能中选择

c# - 通过 HTML 敏捷包向 HTML 添加文档类型

c# - 在 c# 日期和 sql 日期时间之间转换的简单方法

.net - 一个好的 gradle nunit 插件?

c# - 从字符串反序列化 XML

.net - SqlCommand.ExecuteReader() 什么时候返回 null?