我正在開發一個VB.NET Windows服務,它正在審覈BMS數據庫中的新警報,並打電話遠程警告操作員。我目前使用的是.NET TAPI封裝和SAPI 5.3互操作程序集,並且我正在通過電話說話的步驟如下:通過調制解調器從Windows服務播放語音
- 初始化TAPI接口;
- 撥打運營商號碼;
- 取語音調制解調器波形輸出設備編號
- 將語音輸出設置爲該設備編號;
- 讓SAPI發揮神奇功效。
如果我將代碼編譯爲Windows控制檯或表單應用程序,但只要將它編譯並作爲Windows服務運行,第5步就不會發生 - 語音調制解調器調用但保持靜音;一切工作,甚至數字監控。 現在我知道windows服務不應該與桌面交互,所以諸如UI元素和播放聲音之類的東西是否定的,但我正在努力尋找一種不涉及使用wave API的替代方案,並且可以在合理的時間內開發。有任何想法嗎?
該服務現在在啓動時創建一個消息窗口,如你所建議的。現在我該怎麼做?我如何告訴SAPI使用該窗口的句柄?一旦窗口創建或稍後再啓動消息循環?謝謝你的幫助。 – Samuele 2010-06-23 10:49:24
通常情況下,您需要啓動一個線程,該線程除了泵送消息外(並且知道何時關閉)。 SAPI是自由線程的,因此您可以跨線程傳遞SAPI接口指針而不會出現任何問題。 – 2010-06-23 16:52:46