//
//程序应该是获得所有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;
//程序应该是获得所有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;
求求各位帮忙。
在线等。