2010-12-18 4 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 Says : 많은 구형 시스템에서 오디오 출력 장치는 단일 프로세스로만 열 수 있습니다. Windows XP 이전의 Windows 버전에서는 오디오 입력 장치를 열 수있는 프로세스가 하나뿐입니다. 따라서 SPERR_DEVICE_BUSY는 다른 프로세스 또는 스레드에서 사용중인 장치를 열려고 시도하면 반환됩니다. Windows XP (이상)에서는 여러 프로세스가 동일한 오디오 장치를 열 수 있습니다. – Remko

+1

@Remko : 그것은 본격적인 대답 일 수 있습니다. 내 표를 얻을 것입니다. – gabr

+0

@ gabr : 감사합니다. 답변으로 추가되었습니다. – Remko

답변

3

오류 0x80046005는 SPERR_DEVICE_BUSY입니다. 하드웨어 장치가 다른 스레드 또는 프로세스에서 사용 중입니다. MSDN Says : 많은 구형 시스템에서 오디오 출력 장치는 단일 프로세스로만 열 수 있습니다. Windows XP 이전의 Windows 버전에서는 오디오 입력 장치를 열 수있는 프로세스가 하나뿐입니다. 따라서 SPERR_DEVICE_BUSY는 다른 프로세스 또는 스레드에서 사용중인 장치를 열려고 시도하면 반환됩니다. Windows XP 이상에서는 여러 프로세스가 동일한 오디오 장치를 열 수 있습니다.

관련 문제