2012-03-22 3 views
0

Windows 7 컴퓨터에서 마이크 음소거에 문제가 있습니다. 하지만 내가 실행 한 모든 코드는 실행되지 않았습니다. C# 코드를 사용하여 Windows 7 컴퓨터에서 실행 되나요? 난 그냥 온/오프 솔루션이 필요해. DDL 파일은 Win x64bit에서도 작동합니다. 하지만 내가 다른 곳에서 오류를 만듭니다. 오류가 if (MessageBox.Show("Incoming Call from: " + string.Format(e.RemoteParticipant), "Video Chat Call", MessageBoxButton.YesNo) == MessageBoxResult.Yes)에서 발생하고 말한다면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(); 

      }' 

은 { "산술 연산은 오버플로가 발생했습니다."}

+0

'e.RemoteParticipant' 무엇입니까? 그 문자열을 넣으면 그 줄에 형식을 저장하고 변수에 저장하면 대신 그 줄에서 오류가 발생합니까? 사실 하나의 매개 변수 만 사용하는'string.Format'의 오버로드가 보이지 않습니다. 확장 메서드입니까? –

+0

가능한 복제 http://stackoverflow.com/a/3046715/285594 – YumYumYum

답변

0

이 도움이 될 : Windows Mixer Control in C#

행운을 빕니다 :).

EDIT : 내가 맞으면 특정 장치를 음소거 할 수도 있습니다.

+0

나를 위해이 오류를 greate하는 것으로 보입니다. 산술 연산으로 인해 오버플로가 발생했습니다. : – mortenstarck

1

당신은 https://www.nuget.org/packages/AudioSwitcher.AudioApi.CoreAudio/4.0.0-alpha5

코드는 매우 간단 오디오 스위처 API를되어 사용할 수 있습니다

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

Nice.'SetMuteAsync'는'MuteAsync'이어야합니다. 그렇지 않으면 그냥 ToggleMute를 사용할 수 있습니다. –