关于TAgent控件发声问题 在状态为隐藏的情况下怎么让它读英文?显示的情况下可以读出英文并有声音,可是一隐藏就没有声音了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、到微软agent主页下载spchapi.exe安装。 在Delphi中,在Project菜单中单击Import Type Library... 选择“ADD",找到Windows目录下的Speech菜单下的Vtxtauto.tlb,然后就Ok了。2、程序代码如下:unit Speak;interfaceuses Windows, Messages, SysUtils, vtxtauto_tlb,Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;type TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; Memo1: TMemo; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; vtxt:vtxtauto_ ;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);begin vtxt:=covtxtauto_.Create; vtxt.Register('','Speech'); memo1.Text:='' ;end;procedure TForm1.SpeedButton1Click(Sender: TObject);beginif memo1.Text='' thenbeginshowmessage('英语语句不能为空!');endelsebeginvtxt.Speak(trim(memo1.text), vtxtst_READING+ vtxtsp_NORMAL);end;end;procedure TForm1.SpeedButton2Click(Sender: TObject);beginvtxt.StopSpeakingend;end.这样做,不管精灵是隐藏还是显示的情况下都可以发音。给分吧! 如果不像用spchapi(推荐用)那么把它缩小到很小,然后隐藏在一个控件的后面拉 delphi 7.0生成的AgentObjects_TLB.pas出错导至Ms Agent不能发声 笔者是一位delphi初学者,操作系统为winxp,安装开发软件为delphi 7.0企业版。看了在<<开发高手>>第2004年第01期41页的<<汪谈VB在编程中如何实现添加动画小精灵角色>>后,想在delphi上实现上面所讲到的功能。但是遇到了不少问题:1、 在Delphi中添加Agent控件 在Delphi IDE中选择菜单Component,Import ActiveX Control——在Import ActiveX下的列表框中选择Microsoft Agent Control 2.0(Version 2.0),点击按钮Install——在Install对话框中点击按钮OK——在Confirm对话框中点击按钮Yes——在对话框中点击按钮OK。至此,Agent控件被添加到Delphi组件板ActiveX页上。2、 在Delphi中调用Agent控件 在Delphi IDE 中新建Project1(包含Form1),在Form1上放置Agent1(Name属性为Agent1)、Button1。 private { Private declarations } Peedy: IagentCtlCharacterEx; Request1: IagentCtlRequest;procedure TForm1.FormShow(Sender: TObject);beginRequest1:=Agent1.Characters.Load('Peedy',CurDir+'\Benoit.acs');Peedy:=Agent1.Characters.Character('Peedy');Agent1.Connected:=True;Peedy.MoveTo(300,400,12);end;procedure TForm1.Button1Click(Sender: TObject);beginPeedy.LanguageID:=$409; //<----出错的就是这一句!!!Peedy.Show(0);Peedy.Play('LookRight');Peedy.Speak('Hello,wellcome to MS Agent Character world','')end;无论你把Peedy.LanguageID设置成任何值,运行时都会报错!!!后来在CSDN论谈中查找这个问题的解决方案,但是所有的解决方案都没有成功。有人说是把Peedy.LanguageID设置成1033(是$409(十六进制)的十进制表示)有人说试过了还是不行。我试了也不行。直到有一个叫MIKY的谈到读取Character动作列表时修改AgentObjects_TLB.pas后成功。从而受到了启发在google中搜索AgentObjects_TLB.pas结果在cvs.sourceforge.net中下载了一个AgentObjects_TLB.pas。覆盖到X:\Program Files\Borland\Delphi7\Imports\AgentObjects_TLB.pas.然后再运行上面的代码。成功了!!我的Agent终于可以说话了。哈哈!!!!有人需要我可以把AgentObjects_TLB.pas发给他。 delphi-delphi中怎样用sql的union all语句 怎么使TServerSocket在多线程下保持长连接 100分请教问题,分不够可以再加. 从一个表的数据COPY到另一个表里面 在哪可找到比较好的DELPHI源程序代码 如何写开机自启动并且躲过杀软防火墙 能否用windows2000作为COM+客户端访问另外一台COM+服务器?分数不够可以再加~~ 那有Delphi6的下载? 新手提问:关于paradox中类型money的显示问题 if 计算机老师 = true then 编程水平 := '菜'??? 关于ms agent 的使用 急救。我的MS Agent 不说话
在Delphi中,在Project菜单中单击Import Type Library...
选择“ADD",找到Windows目录下的Speech菜单下的Vtxtauto.tlb,然后就Ok了。2、程序代码如下:
unit Speak;interfaceuses
Windows, Messages, SysUtils, vtxtauto_tlb,Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Memo1: TMemo;
Label1: TLabel;
procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1; vtxt:vtxtauto_ ;
implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
vtxt:=covtxtauto_.Create;
vtxt.Register('','Speech');
memo1.Text:='' ;
end;procedure TForm1.SpeedButton1Click(Sender: TObject);
beginif memo1.Text='' then
begin
showmessage('英语语句不能为空!');end
else
begin
vtxt.Speak(trim(memo1.text), vtxtst_READING+ vtxtsp_NORMAL);
end;end;procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
vtxt.StopSpeaking
end;end.这样做,不管精灵是隐藏还是显示的情况下都可以发音。
给分吧!
那么把它缩小到很小,然后隐藏在一个控件的后面拉
{ Private declarations }
Peedy: IagentCtlCharacterEx;
Request1: IagentCtlRequest;procedure TForm1.FormShow(Sender: TObject);
begin
Request1:=Agent1.Characters.Load('Peedy',CurDir+'\Benoit.acs');
Peedy:=Agent1.Characters.Character('Peedy');
Agent1.Connected:=True;
Peedy.MoveTo(300,400,12);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Peedy.LanguageID:=$409; //<----出错的就是这一句!!!
Peedy.Show(0);
Peedy.Play('LookRight');
Peedy.Speak('Hello,wellcome to MS Agent Character world','')
end;
无论你把Peedy.LanguageID设置成任何值,运行时都会报错!!!
后来在CSDN论谈中查找这个问题的解决方案,但是所有的解决方案都没有成功。
有人说是把Peedy.LanguageID设置成1033(是$409(十六进制)的十进制表示)
有人说试过了还是不行。
我试了也不行。
直到有一个叫MIKY的谈到读取Character动作列表时修改AgentObjects_TLB.pas后成功。
从而受到了启发在google中搜索AgentObjects_TLB.pas结果在cvs.sourceforge.net
中下载了一个AgentObjects_TLB.pas。覆盖到X:\Program Files\Borland\Delphi7\
Imports\AgentObjects_TLB.pas.
然后再运行上面的代码。
成功了!!
我的Agent终于可以说话了。
哈哈!!!!
有人需要我可以把AgentObjects_TLB.pas发给他。