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

CoInitialize を呼び出しました。私のコードは次のとおりです。

hr := CoInitialize(nil);

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

CoUninitialize;

エラーは、ネオスピーチの音声を選択したときにのみ発生しました。

4

1 に答える 1

3

エラー 0x80046005 は SPERR_DEVICE_BUSY です: ハードウェア デバイスが別のスレッドまたはプロセスによって使用されています。MSDN によると: 多くの古いシステムでは、オーディオ出力デバイスは単一のプロセスでしか開くことができません。Windows XP より前のバージョンの Windows では、オーディオ入力デバイスを開くことができるプロセスは 1 つだけでした。したがって、別のプロセスまたはスレッドによって使用されているデバイスを開こうとすると、SPERR_DEVICE_BUSY が返されます。Windows XP (およびそれ以降) では、複数のプロセスが同じオーディオ デバイスを開くことができます。

于 2010-12-18T19:43:24.747 に答える