Hier habe ich was gefunden:
http://stackoverflow.com/questions/3...text-to-speech
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
voice: OLEVariant;
SavedCW: Word;
begin
voice := CreateOLEObject('
SAPI.SpVoice');
SavedCW := Get8087CW;
Set8087CW(SavedCW or $4);
voice.speak('Hello World!', 0); // Funktioniert nur, solange hier 0 steht
Set8087CW(SavedCW);
end;
Das
speak im obigen Beispiel funktioniert nur, solange es nicht asynchron (Parameter 1 statt 0) aufgerufen wird, weil das Objekt am Ende der Prozedur aufgeräumt wird, noch bevor der Rechner zu Sprechen begonnen hat. Also ganz so wie hier im Beispiel sollte man es nicht umsetzen
Müßte man nicht eigentlich beim Programmstart noch ein CoInitialize(nil) machen?
Gruß
Michael