我在Windows 7机器上静音麦克风时遇到问题。但是我发现的所有代码都没有运行,它没有做任何运行的事情。是否使用C#代码完成了Windows 7机器。我只需要一个开/关解决方案。 DDL文件也适用于Win x64bit。但我觉得我在另一个地方创造了一个错误。
mixers.Recording.Lines.GetMixerFirstLineByComponentType(
MIXERLINE_COMPONENTTYPE.SRC_MICROPHONE).Volume = 0;
if (!mediaElement1.CheckAccess()) mediaElement1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)delegate { mediaElement1.Play(); });
if (MessageBox.Show("Incoming Call from: " + string.Format(e.RemoteParticipant), "Video Chat Call", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
mixers.Recording.Lines.GetMixerFirstLineByComponentType(
MIXERLINE_COMPONENTTYPE.SRC_MICROPHONE).Volume = 1;
if (!mediaElement1.CheckAccess()) mediaElement1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)delegate { mediaElement1.Stop(); });
_currentConversation.StartVideo();
}'
如果if (MessageBox.Show("Incoming Call from: " + string.Format(e.RemoteParticipant), "Video Chat Call", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
发生错误并且说{“算术运算导致溢出。”}
答案 0 :(得分:2)
http://www.computercabal.com/2010/11/mute-microphone-from-c-on-windows.html - 这位先生似乎有类似的问题,他提供了解决方案的源代码。
答案 1 :(得分:1)
您可以使用Audio Switcher Api https://www.nuget.org/packages/AudioSwitcher.AudioApi.CoreAudio/4.0.0-alpha5
代码非常简单:
private async void btnMute_ButtonClick(object sender, EventArgs e)
{
var audioController = new CoreAudioController();
var devices = await audioController.GetDevicesAsync(DeviceType.Capture, DeviceState.Active);
var device = devices.FirstOrDefault(x => x.IsDefaultDevice);
if(device != null) {
await device.SetMuteAsync(!device.IsMuted);
}
}
答案 2 :(得分:0)
这可能会有所帮助:Windows Mixer Control in C#
祝你好运:)。编辑:如果我是对的话,也可以将某些设备静音。