Question

Je l'ai fait en créant un objet OLE avec Delphi dans 2000 / NT / XP comme suit:

Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)

Mais cela ne fonctionne pas sous Vista, comment puis-je faire que mon programme parle simplement du texte dans Vista?

Était-ce utile?

La solution

Je viens d'essayer (D2009 sur Vista Home Premium) avec le code suivant et ça marche!

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Voice: Variant;
begin
  Voice := CreateOLEObject('SAPI.SpVoice');
  Voice.speak('Hello World');
end;

end.

Pour info, il existe un article sur l'utilisation de la parole dans la programmation Delphi de Brian Long ...

Mise à jour (très) tardive:

Pour savoir pourquoi cela pourrait ne pas fonctionner dans Vista et donner une exception EZeroDivide en dehors de l'EDI, consultez cette autre question SO: Delphi SAPI

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top