2012-03-22 14 views
0

Windows 7マシンでマイクのミュートに問題があります。しかし、私が見つけたすべてのコードは実行できませんでした。 C#コードを使用してWindows 7マシンで実行されていますか?私はオン/オフソリューションが必要です。 DDLファイルはWin x64bitでも動作します。しかし、私はエラーが別の場所を作成することです。 { "算術演算の結果がオーバフロー"}Windows 7のミュートマイク

 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

'e.RemoteParticipant'は何ですか?あなたがその文字列を置くならば、それ自身の行であり、それを変数に保存しますか?代わりにその行にエラーが発生しますか?実際、私は 'string.Format'のオーバーロードが1つのパラメータしか取らないことを知りません、それは拡張メソッドですか? –

+0

重複している可能性があります。http://stackoverflow.com/a/3046715/285594 – YumYumYum

答えて

0

これは役立つかもしれない:Windows Mixer Control in C#

幸運を:)。

EDIT:私が正しい場合は、特定のデバイスをミュートすることもできます。

+0

このエラーを訂正するようです。算術演算でオーバーフローが発生しました。 :( – mortenstarck

1

あなたは音声スイッチャー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); 
    } 
} 
+0

ニース。 'SetMuteAsync'は' MuteAsync'でなければなりませんが、単に 'ToggleMute'を使うこともできます –