C# 静音/取消静音,使用C更改Windows 7 x64中的主音量#
如何使用C#在Windows 7中调整主音量C# 静音/取消静音,使用C更改Windows 7 x64中的主音量#,c#,windows-7,windows-7-x64,C#,Windows 7,Windows 7 X64,如何使用C#在Windows 7中调整主音量 我看到了一个使用winmm.dll的优秀实现,但它可以在XP中使用,而不能在Windows 7中使用。CodeProject有一个非常好的示例。请注意,它完全依赖于COM互操作(如果您对实现细节感兴趣,请检查MSDN上的COM接口,如和),并且仅适用于Vista/Win7及更高版本 支持的最低客户端:Windows Vista 支持的最低服务器:Windows server 2008 我成功地将nuget包Naudio与以下代码一起使用: publi
我看到了一个使用winmm.dll的优秀实现,但它可以在XP中使用,而不能在Windows 7中使用。CodeProject有一个非常好的示例。请注意,它完全依赖于COM互操作(如果您对实现细节感兴趣,请检查MSDN上的COM接口,如和),并且仅适用于Vista/Win7及更高版本 支持的最低客户端:Windows Vista 支持的最低服务器:Windows server 2008
我成功地将nuget包Naudio与以下代码一起使用:
public void SetVolume(int level)
{
try
{
//Instantiate an Enumerator to find audio devices
NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
//Get all the devices, no matter what condition or status
NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.All);
//Loop through all devices
foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol)
{
try
{
if (dev.State == NAudio.CoreAudioApi.DeviceState.Active)
{
var newVolume = (float)Math.Max(Math.Min(level, 100),0) / (float)100;
//Set at maximum volume
dev.AudioEndpointVolume.MasterVolumeLevelScalar = newVolume;
dev.AudioEndpointVolume.Mute = level == 0;
//Get its audio volume
_log.Info("Volume of " + dev.FriendlyName + " is " + dev.AudioEndpointVolume.MasterVolumeLevelScalar.ToString());
}
else
{
_log.Debug("Ignoring device " + dev.FriendlyName + " with state " + dev.State);
}
}
catch (Exception ex)
{
//Do something with exception when an audio endpoint could not be muted
_log.Warn(dev.FriendlyName + " could not be muted with error " + ex);
}
}
}
catch (Exception ex)
{
//When something happend that prevent us to iterate through the devices
_log.Warn("Could not enumerate devices due to an excepion: " + ex.Message);
}
}
非常好,我测试了它,它在Windows7x64中工作。谢谢!codeproject文章已被删除:(有谁可以在这里插入代码吗?此答案包含一些代码(可能不是已删除codeproject文章中的代码,但至少包含基本的COM接口和定义):可能重复