2010-12-18 47 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(或更高版本)中,多个进程可以打开相同的音频设备

相关问题