2012-04-09 95 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進行交互之外,我找不到解決方法。