Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Warten bis Sprachausgabe beendet

  Alt 15. Okt 2013, 01:01
Das bedeutet imho, dass dein Problem beim Aufwecken durch den Tastendruck (QS_Key) liegt und nicht bei der Sprachausgabe.

Eventuell könnte man es so beheben:
Delphi-Quellcode:
procedure TMain.Button1Click(Sender: TObject);
var Reason:Cardinal; Ev:THandle;
begin
   Edit1.Text:='';
   Application.ProcessMessages;
   Voice.Speak('Hallo, ich warte jetzt, bis der Text zu ende ist, oder eine '+
               'Taste gedrückt wird.', 1);
   Ev:=Voice.SpeakCompleteEvent;
   // >>>
   speechCanceled := false; // "global"
   repeat
     Reason:=MsgWaitForMultipleObjects(1, Ev, False, Infinite, QS_Key);
     if Reason = (WAIT_OBJECT_0 + 1) then
       Application.ProcessMessages;
   until speechCanceled or (Reason = WAIT_OBJECT_0);
   // <<<
   Edit1.Text:=IntToStr(Reason);
end;
speechCanceled könnte dann bei Bedarf (also einer gewünschten Tasten-Aktion) in der Message-Behandlung des Formulars gesetzt werden.

Geändert von BUG (15. Okt 2013 um 02:06 Uhr)
  Mit Zitat antworten Zitat