프로세스가 서비스로 실행 중일 때만 오류 코드 0x80045063 (SPERR_NOT_ACTIVE_SESSION)으로 Speak() 한 후 다음 코드가 실패하는 이유는 무엇입니까?Windows 서비스에서 SAPI를 사용하여 간단한 텍스트로 텍스트 번역
ISpVoicePtr pVoice;
CoCreateInstance(
CLSID_SpVoice,
0,
CLSCTX_INPROC_SERVER,
IID_ISpVoice, (LPVOID *) &pVoice
);
pVoice->SetOutput(0, TRUE);
pVoice->Speak(L"Hello", 0, NULL);
데스크톱 세션과 상호 작용하는 서비스에 대한 보안 변경 사항에 관해 이야기 할 수있는 유일한 자료가 있습니다. .NET에서 다음은 서비스 내에서 작동 할 것이므로 SAPI가 있거나없는 일반 C++를 사용하여 어떻게 수행되는지 궁금합니다.
System::Speech::Synthesis::SpeechSynthesizer synth;
synth.SetOutputToDefaultAudioDevice();
synth.Speak("Hello");
난 그냥 .NET 및 System.Speech를 사용합니다 나는 그것을 달리 사소한 생각하지 않는. SAPI는 Microsoft.Speech에서 내부적으로 사용됩니다. – hpl