2012-04-09 92 views
0

我尝试在C#.NET中使用TAPI编写自动答案机器。在Windows 7中没有声音TAPI

我使用tapi3_dev样品在Windows XP中,但在Windows 7 work.this样品工作

,一切正常(没有错误或异常),但没有播放声音我就能录制的声音;

请帮帮我。


我的代码::

case TAPI3Lib.ADDRESS_EVENT.AE_RINGING: this.PlayVoice(CallInfo); 

... 

private void PlayVoice(TAPI3Lib.ITCallInfo iTCallInfo) 
     { 
      try 
      { 
       //the supported file extensions are .avi and .wav. http://msdn.microsoft.com/en-us/library/ms730457.aspx 
       TAPI3Lib.ITBasicCallControl2 iTBasicCallControl2 = (TAPI3Lib.ITBasicCallControl2)iTCallInfo; 
       this.selectedTerminal = iTBasicCallControl2.RequestTerminal(TAPI3Lib.TapiConstants.CLSID_String_FilePlaybackTerminal, TAPI3Lib.TapiConstants.TAPIMEDIATYPE_AUDIO, TAPI3Lib.TERMINAL_DIRECTION.TD_CAPTURE); 
       TAPI3Lib.ITMediaPlayback iTMediaPlayback = (TAPI3Lib.ITMediaPlayback)this.selectedTerminal; 
       object[] playList = new object[1]; 
       playList[0] = @"C:\ModemLog\7533f717-6cc5-41d5-9845-6983cff85e4b.avi"; 
       //playList[0] = @"C:\Users\Abedi\Desktop\Anghezi.wav"; 
       //playList[0] = @"C:\ProgramData\Venta\VentaFax & Voice 6\Service\greet1.wav"; 
       iTMediaPlayback.PlayList = playList; 
       iTBasicCallControl2.SelectTerminalOnCall(this.selectedTerminal); 
       this.iTMediaControl = (TAPI3Lib.ITMediaControl)this.selectedTerminal; 
       if (iTCallInfo.CallState == TAPI3Lib.CALL_STATE.CS_OFFERING) 
        iTBasicCallControl2.Answer(); 
       this.iTMediaControl.Start(); 
       (selectedTerminal as TAPI3Lib.ITBasicAudioTerminal).Volume = 0; 
      } 
      catch (Exception exception) 
      { 
       this.Log(exception.Message, "Exception in PlayVoice"); 
       this.WriteLine(exception.Message); 
       this.buttonDisconnect_Click(null, EventArgs.Empty); 
      } 
     } 
+0

检查您是否有播放终端 – bresleveloper 2012-06-03 12:23:41

回答

2

是一个窗口服务运行你的代码? Windows 7下的Windows服务中存在一个已知的音频控制问题。目前,除了启动Windows应用程序以与tapi进行交互之外,我找不到解决方法。