//
//程序应该是获得所有TTS引擎的枚举,然后一个个显示在ComboBox1中供用户选择,
//但为什么出来的只有一个“sam”,而事实上机器有3个英文和1个中文啊。
//这代码是2000年下载的,注明了适用Win2K的。procedure TForm1.Button1Click(Sender: TObject);
var
  NumFound : DWord;
  ModeInfo : TTSModeInfo;
  I : Integer;
begin
    I := 0;
    {Create TTS Enumerator object with the interface ITTSEnum and return the pointer in aITTSEnum}
    OleCheck(CoCreateInstance(CLSID_TTSEnumerator, Nil, CLSCTX_ALL, IID_ITTSEnum, aTTSEnum));    OleCheck(aTTSEnum.Reset);
    OleCheck(aTTSEnum.Next(1, ModeInfo, @NumFound));  {First Get}
    
    While NumFound > 0 do
    begin
      ComboBox1.Items.Add(String(ModeInfo.szModeName));
      OleCheck(aTTSEnum.Next(1, ModeInfo, @NumFound)); {additional gets}
      Inc(I);
    end;
  end;
  Label1.Caption := IntToStr(I) + ' Engines Available';
end;

解决方案 »

  1.   

    为什么很多都没有在windows里定义呢?晕啊。不懂,我真的不懂。
      

  2.   

    xixuemao:先谢谢你了。
    我也很晕,现在还是在线等。
    求求各位了。
      

  3.   

    TO:  cuilj(一云忆水) 
    Uses  
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ComCtrls, ComObj, ActiveX, speech, TTSVar, ExtCtrls, Buttons;
    上面的程序好象只是用到ActiveX单元。
      

  4.   

    http://www.text-reader.com/ttshelp/ttsmodeinfo.html
      

  5.   

    http://bdn.borland.com/article/0,1410,29582,00.html
      

  6.   

    cuilj(一云忆水) :多谢多谢,Borland的更爽啊。
    好人啦,多谢了。
      

  7.   

    Borland网站上有详细的例子,注册一个账号,下载个demo吧