我找到了this answer,它建议使用"core audio.dll" API,代码如下:
private function getmute() as boolean
Dim devenum As New MMDeviceEnumerator
Dim device As MMDevice = devenum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia)
If device.AudioEndpointVolume.Mute = True Then
Return True
Else
Return False
End If
End Function
我尝试了该代码,但它不工作,我不能留下评论的另一个问题.
当我尝试上面的代码时,下面的代码行抛出了一个异常:
If device.AudioEndpointVolume.Mute = True Then
下面是异常消息:
音频端点卷不是设备的成员。
我已经导入了CoreAudioAPI
,还有什么问题吗?
我正在寻找VB.NET
或C#
解决方案。
2条答案
按热度按时间xxe27gdn1#
VB.Net
实现γ η ρ ά σ κ ω δ 'α ε ί π ο λ λ ά δ ι δ α σ κ ό μ ε的重写(+奖金)发布。代码被 Package 在一个
Class
(CoreAudio
)中,包括原始的IsMuted()
方法,以及我动态实现的其他方法(因为,为什么不呢)。MSDN上有关Windows CoreAudio APIs的更多信息。
GitHub的NAudio CoreAudioApi实现(
C#
)。返回默认音频设备的静音状态。
设置默认音频设备(
True/False
)的静音状态获取默认音频设备的音量状态。值范围为
0 to 100
将默认音频设备的音量状态设置为
0 to 100
范围内的值将默认音频设备的音量增加一级(通常为2个单位)
将默认音频设备的音量降低一级。
des4xlb02#
使用C/C++并对 directshow 有一定的了解是非常简单的,但使用C#时,您需要某种 Package 器来进行调用。老实说,我不使用托管语言来使用低级库,但可能我找到了适合您的情况的代码:
AudioManager.cs