谁能做出来? 出来一个Merlin,对我说'hello'。对它叫一声'Hi',他说一声“HI”,叫一声'Fuck you',他说"Fuck you too"还请告诉我languageID怎么设定?我这里老是出现连接错误请具体教来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if tmp='hello' then tmp:='Hi';这种方法不行吗?如果多的话,用一个表保存对应关系不就行了. MyAgent.Characters.Load(MerlinID,MerlinACS); MerlinID := MyAgent.Characters.Character(MerlinID); 自动对话是太夸张了,俺不会,不过使用MsAgent倒会一点. 请自己把下面代码中的路径修改掉.-------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, AgentObjects_TLB;type TForm1 = class(TForm) Agent1: TAgent; btnSpeak: TButton; Edit1: TEdit; btnPlayVoice: TButton; ListBox: TListBox; btnLoadActionList: TButton; btnStop: TButton; Button1: TButton; procedure btnSpeakClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnPlayVoiceClick(Sender: TObject); procedure btnLoadActionListClick(Sender: TObject); procedure ListBoxDblClick(Sender: TObject); procedure btnStopClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Agent1Command(Sender: TObject; const UserInput: IDispatch); private { Private declarations } public { Public declarations } end;const {$EXTERNALSYM IID_IEnumVariant} IID_IEnumVariant: TGUID = (D1:$00020404;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));var Form1: TForm1;implementationuses ActiveX;{$R *.dfm}var Genie: IAgentCtlCharacterEx; Request1,Request2: IAgentCtlRequest;procedure TForm1.btnSpeakClick(Sender: TObject);begin Genie.Speak(Edit1.Text,EmptyParam); //Genie.Hide(1);end;procedure TForm1.FormCreate(Sender: TObject);begin Request1:= Agent1.Characters.Load('Genie1','c:\windows\msagent\chars\merlin.acs'); Genie:= IAgentCtlCharacterEx(Agent1.Characters.Character('Genie1')); Genie.LanguageID:= $0804; Edit1.Text:= 'Hello world'; Genie.Show(0);end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin Genie.Hide(1); Agent1.Characters.Unload('Genie1'); Action:= caFree;end;procedure TForm1.btnPlayVoiceClick(Sender: TObject);begin Request1:= Genie.Speak('hi','c:\temp\2.wav');end;procedure TForm1.btnLoadActionListClick(Sender: TObject);var AnimationNames:IAgentCtlAnimationNames; AnimName:OleVariant; dwRetrieved:DWORD; AEnum:IEnumVariant;begin //Genie.ShowPopupMenu(200,200); AnimationNames:=Genie.AnimationNames; AnimationNames.Enum.QueryInterface(IID_IEnumVariant,AEnum); ListBox.Clear; while AEnum.Next(1,AnimName,dwRetrieved)=0 do ListBox.Items.Add(AnimName);end;procedure TForm1.ListBoxDblClick(Sender: TObject);begin Request2:= Genie.Play(ListBox.Items[ListBox.ItemIndex]);// ShowMessage(IntToStr(Request2.ID));end;procedure TForm1.btnStopClick(Sender: TObject);begin if Request2.ID <> 0 then Genie.Stop(Request2);end;procedure TForm1.Button1Click(Sender: TObject);begin Genie.Commands.Add('1', 'Yes', '', True, True); Genie.Commands.Add('2', 'No', '', True, True);end;procedure TForm1.Agent1Command(Sender: TObject; const UserInput: IDispatch);begin if IAgentCtlUserInput(UserInput).Name = '1' then begin ShowMessage('Yes'); end else if IAgentCtlUserInput(UserInput).Name = '2' then begin ShowMessage('No'); endend;end. unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, AgentObjects_TLB;type TForm1 = class(TForm) Agent1: TAgent; procedure FormCreate(Sender: TObject); procedure onPaint(Sender: TObject); private { Private declarations } public { Public declarations } end;const {$EXTERNALSYM IID_IEnumVariant} IID_IEnumVariant: TGUID = (D1:$00020404;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));var Form1: TForm1;implementationuses ActiveX;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);var num: Integer; Merlin: IagentCtlCharacterEx; Request1: IagentCtlRequest;begin Request1:= Agent1.Characters.Load('Merlin','c:\windows\msagent\chars\merlin.acs'); Merlin:= IAgentCtlCharacterEx(Agent1.Characters.Character('Merlin')); Merlin.LanguageID:=$0804; Merlin.Show(0); Merlin.MoveTo(Screen.Width-250,Screen.Height-250,2); Merlin.Speak('Welcome to Windows!',''); Merlin.Play('Pleased'); Merlin.Speak('I am Windows Helper, Merlin.',''); Merlin.Play('Greet'); Merlin.Speak('Call me whenever you need.',''); Merlin.Play('Blink');end;procedure TForm1.onPaint(Sender: TObject);begin ShowWindow(Form1.Handle,SW_HIDE); ShowWindow(Application.Handle,SW_HIDE);end;end./////////////////////////////////////////我就这么写的,LanguageID那一段有的话就会出现Access Violation的警告框!是怎么回事? 我的OS是XP,是不是有关系啊? IdUDPClient 的问题!!谢谢大家 文件拷贝的问题,急啊! 如何使光标定在TEdit的开始处。谢谢 RAVE 的图片问题 两个问题,我新来的,请多指教 同盟们 帮帮忙! 如何给image控件加上键盘响应事件?????????????????????????? ACTIVEX对象创建窗体中,method的Return type是什么意思 水晶报表的问题。 急急急!,用ADO来实现对VF数据库的PACK操作?? 这个触发器怎么写? 哪位了解超市的?
if tmp='hello' then
tmp:='Hi';这种方法不行吗?如果多的话,用一个表保存对应关系不就行了.
MerlinID := MyAgent.Characters.Character(MerlinID);
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, AgentObjects_TLB;type
TForm1 = class(TForm)
Agent1: TAgent;
btnSpeak: TButton;
Edit1: TEdit;
btnPlayVoice: TButton;
ListBox: TListBox;
btnLoadActionList: TButton;
btnStop: TButton;
Button1: TButton;
procedure btnSpeakClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnPlayVoiceClick(Sender: TObject);
procedure btnLoadActionListClick(Sender: TObject);
procedure ListBoxDblClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Agent1Command(Sender: TObject; const UserInput: IDispatch);
private
{ Private declarations }
public
{ Public declarations }
end;
const
{$EXTERNALSYM IID_IEnumVariant}
IID_IEnumVariant: TGUID = (D1:$00020404;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));var
Form1: TForm1;implementationuses ActiveX;
{$R *.dfm}var
Genie: IAgentCtlCharacterEx;
Request1,Request2: IAgentCtlRequest;
procedure TForm1.btnSpeakClick(Sender: TObject);
begin
Genie.Speak(Edit1.Text,EmptyParam);
//Genie.Hide(1);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Request1:= Agent1.Characters.Load('Genie1','c:\windows\msagent\chars\merlin.acs');
Genie:= IAgentCtlCharacterEx(Agent1.Characters.Character('Genie1'));
Genie.LanguageID:= $0804;
Edit1.Text:= 'Hello world';
Genie.Show(0);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Genie.Hide(1);
Agent1.Characters.Unload('Genie1');
Action:= caFree;
end;procedure TForm1.btnPlayVoiceClick(Sender: TObject);
begin
Request1:= Genie.Speak('hi','c:\temp\2.wav');
end;procedure TForm1.btnLoadActionListClick(Sender: TObject);
var
AnimationNames:IAgentCtlAnimationNames;
AnimName:OleVariant;
dwRetrieved:DWORD;
AEnum:IEnumVariant;
begin
//Genie.ShowPopupMenu(200,200);
AnimationNames:=Genie.AnimationNames;
AnimationNames.Enum.QueryInterface(IID_IEnumVariant,AEnum);
ListBox.Clear;
while AEnum.Next(1,AnimName,dwRetrieved)=0 do
ListBox.Items.Add(AnimName);
end;procedure TForm1.ListBoxDblClick(Sender: TObject);
begin
Request2:= Genie.Play(ListBox.Items[ListBox.ItemIndex]);
// ShowMessage(IntToStr(Request2.ID));
end;procedure TForm1.btnStopClick(Sender: TObject);
begin
if Request2.ID <> 0 then Genie.Stop(Request2);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Genie.Commands.Add('1', 'Yes', '', True, True);
Genie.Commands.Add('2', 'No', '', True, True);
end;procedure TForm1.Agent1Command(Sender: TObject;
const UserInput: IDispatch);
begin
if IAgentCtlUserInput(UserInput).Name = '1' then begin
ShowMessage('Yes');
end
else if IAgentCtlUserInput(UserInput).Name = '2' then begin
ShowMessage('No');
end
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, AgentObjects_TLB;type
TForm1 = class(TForm)
Agent1: TAgent;
procedure FormCreate(Sender: TObject);
procedure onPaint(Sender: TObject); private { Private declarations }
public
{ Public declarations }
end;const
{$EXTERNALSYM IID_IEnumVariant}
IID_IEnumVariant: TGUID = (D1:$00020404;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));var
Form1: TForm1;
implementationuses ActiveX;
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
num: Integer;
Merlin: IagentCtlCharacterEx;
Request1: IagentCtlRequest;
begin
Request1:= Agent1.Characters.Load('Merlin','c:\windows\msagent\chars\merlin.acs');
Merlin:= IAgentCtlCharacterEx(Agent1.Characters.Character('Merlin'));
Merlin.LanguageID:=$0804;
Merlin.Show(0);
Merlin.MoveTo(Screen.Width-250,Screen.Height-250,2);
Merlin.Speak('Welcome to Windows!','');
Merlin.Play('Pleased');
Merlin.Speak('I am Windows Helper, Merlin.','');
Merlin.Play('Greet');
Merlin.Speak('Call me whenever you need.','');
Merlin.Play('Blink');
end;procedure TForm1.onPaint(Sender: TObject);
begin
ShowWindow(Form1.Handle,SW_HIDE);
ShowWindow(Application.Handle,SW_HIDE);
end;end.
/////////////////////////////////////////我就这么写的,LanguageID那一段有的话就会出现Access Violation的警告框!是怎么回事?