2010-12-18 44 views
0
--------------------------- 
Debugger Exception Notification 
--------------------------- 
Project Project1.exe raised exception class EOleException with message 'OLE error 80045006'. 
--------------------------- 
Break Continue Help 
--------------------------- 

我已經調用了CoInitialize。我的代碼是:我在一個線程中調用sapi,得到一個錯誤代碼:OLE錯誤80045006

hr := CoInitialize(nil); 

SpVoice := TSpVoice.Create(Application); 
SpVoice.Connect; 
SpVoice.Speak('Test text'); 

CoUninitialize; 

和錯誤只發生在我選擇neospeech語音。

+1

錯誤0x80046005是SPERR_DEVICE_BUSY:硬件設備正在被另一個線程或進程使用。 MSDN說:在許多較老的系統中,音頻輸出設備只能通過一個進程打開。在Windows XP之前的Windows版本中,只有一個進程可以打開音頻輸入設備。因此,如果嘗試打開正在由不同進程或線程使用的設備,SPERR_DEVICE_BUSY將會返回。在Windows XP(及更高版本)中,多個進程可以打開同一個音頻設備 – Remko 2010-12-18 19:16:29

+1

@Remko:這可能是一個完整的答案。會得到我的投票。 – gabr 2010-12-18 19:36:34

+0

@ gabr:謝謝,添加爲答案。 – Remko 2010-12-18 19:43:55

回答

3

錯誤0x80046005是SPERR_DEVICE_BUSY:硬件設備正在被另一個線程或進程使用。 MSDN說:在許多較老的系統中,音頻輸出設備只能通過一個進程打開。在Windows XP之前的Windows版本中,只有一個進程可以打開音頻輸入設備。因此,如果嘗試打開正在由不同進程或線程使用的設備,SPERR_DEVICE_BUSY將會返回。在Windows XP(或更高版本)中,多個進程可以打開相同的音頻設備

相關問題