【问题标题】:Mute microphone on Windows 7在 Windows 7 上静音麦克风
【发布时间】:2012-03-22 12:08:35
【问题描述】:

我在将 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) 发生错误并显示{“算术运算导致溢出。”}

【问题讨论】:

  • 什么是e.RemoteParticipant?如果您将该 string.Format 放在它自己的行上并将其保存到变量中,该错误是否会发生在该行上?实际上我没有看到只接受一个参数的string.Format 的重载,那是扩展方法吗?

标签: c# windows-7


【解决方案1】:

http://www.computercabal.com/2010/11/mute-microphone-from-c-on-windows.html -- 这位先生似乎遇到了类似的问题,他提供了解决方案的源代码。

【讨论】:

    【解决方案2】:

    您可以使用音频切换器 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);
        }
    }
    

    【讨论】:

    • 不错。看起来SetMuteAsync 应该是MuteAsync,或者你可以使用ToggleMute
    【解决方案3】:

    这可能会有所帮助:Windows Mixer Control in C#

    祝你好运:)。

    编辑:如果我是对的,它还可以使某些设备静音。

    【讨论】:

    • 似乎对我来说更大的这个错误算术运算导致溢出。 :(
    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 2017-10-26
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多