我已購買AddTapi.NET許可證,以簡化在作爲Windows服務運行的產品中使用TAPI的開發。我能夠在Windows GUI和控制檯應用程序中使用TAPI,並將代碼移植到我的Windows服務中。此時,我注意到使用TapiCall.Speak或TapiCall.Play(wavefile)等語音API的代碼在電話線上沒有發出聲音,並且保持沉默。在Windows服務中使用TAPI語音
有幾個以前的問題可能與我的問題有關。
Question: Playing Voice over a modem from a Windows service表示使用語音,是由Windows服務產卵一個GUI線程解決的問題。我試圖做到這一點,但未能通過電話聽到演講。
Question: Access violation with Tapi in Windows service似乎表明與TAPI在服務的最初的問題還沒有被使用AddTapi產品得到解決。該票沒有明確提到使用語音API的,但(SAPI)
我使用Visual Studio 2010和.NET 4.0的C#編程。我試圖在Windows 7上運行它。我收到了來自AddTapi的一封電子郵件,其中指出微軟在Win 2008 Server,Windows Vista和Windows 7中更改了安全性以禁止使用語音子系統。上述文章似乎表明一些成功與AddTapi,雖然它可能不在Windows 7上。
鑑於我正在使用的主系統是Windows服務(和子進程),看起來似乎是最好的方法讓演講工作。如果我將SAPI代碼放在控制檯應用程序中,我希望在不需要用戶主動登錄計算機的情況下對其進行管理。關於我的TAPI代碼沒有任何圖形。我應該採取類似於Article: Launching an interactive process的方法併產生一個交互過程嗎?在Windows服務中是否有使用TAPI語音的成功案例?
看了一兩個星期後,我嘗試使用Windows任務計劃程序將我的Windows服務作爲任務移動。這使我可以控制啓動和停止應用程序。很明顯,當我使用'運行用戶是否登錄'配置任務時,即使用戶登錄時,我的任務中的SAPI也不起作用。當我將設置更改爲「僅在用戶登錄時運行」時,我的計劃任務通常與SAPI Play和Speak選項一起工作。儘管不希望用戶始終登錄,但它似乎是目前唯一的解決方案。 – 2012-08-10 18:19:28