主题:Delphi中Agent技术的应用
---- Microsoft Agent是微软公司于1997年9月发布的一项代理软件开发技术,
而后被集成到Internet Explorer 4.0 Plus及更高版本中,目前版本为2.0,支持简体中文。
作为一种软件代理工具,Agent以其强大的交互功能、鲜明的人性特点、优美的操作界面和
简便统一的编程方法,对由菜单、按钮、提示框等组成的传统人机交互方式产生了很大影响,
在多媒体创作、Web应用、教育软件、软件帮助系统和辅助工具制作等方面,具有广阔的应用前景。
一、 Microsoft Agent技术简介
---- Agent一词的中文意思是“代理”,故名思意,这类代理软件的主要作用是提供一种
易于理解和使用的操作界面,接受用户的指令、代替用户完成某些复杂繁琐的工作、或为用户
提供帮助。科学研究表明:从人机工程的角度考虑,赋予电脑或程序更多人性化色彩,如支持
语音合成输出信息、语音识别输入指令、智能提示、动画等,能够充分提高人机交互的有效性
和易用性。
---- 我们知道,在Office 97帮助系统中有一种叫作Office助手的代理软件,其中幽默风趣的
动画人物,如“大眼夹”,能够根据用户的操作步骤“智能化”地提出一些建议或帮助信息。
与Office助手相比,Agent功能更加丰富强大,表现在:
Office助手沿用传统的不透明矩形窗口,窗口后面的背景被完全挡住;Agent动画人物本身是
一个“AlwaysOnTop”窗口,只有人物身体部分挡住背景,其余部分透明。
Office助手只允许Office 97的各个组件调用,Agent动画人物可由任何Windows程序调用;
Agent支持文字气球和输入提示条,在输出语音的同时把文字输出至一个卡通式文字气球中。
如果电脑系统中安装有Agent语音识别引擎,当用户按住输入键,如Scroll Lock键,在Agent
人物下方出现一个输入命令窗口,表示它正在“聆听”用户的语音命令。
Agent提供Genie、Merlin、Bobby和Peedy等动画人物,不仅具有优美诙谐的动作,而且可以
通过声卡、麦克风与用户交谈。
二、 Microsoft Agent安装方法
---- Agent是一种ActiveX控件,其服务器程序(C:\WINDOWS\MSAGENT\Agentsvr.exe)运行
在Win95/98/NT操作平台上,为其它调用Agent的客户程序提供服务。客户程序可以是利用VB、
C++、Delphi、VFP、PB等开发的应用软件,也可以是HTML文件中的Visual Script、Java Script
脚本语言代码。
安装Agent核心组件Msagent.exe。
安装Lernout & Hauspie TruVoice Text-to-Speech Engine(完成从文字合成语音的工作,
目前版本只支持英语)Cgram.exe。
安装Microsoft Command and Control Speech Engine(提供语音识别功能,目前版本只支持
英语)Actcnc.exe。
Agent动画人物人物数据文件。Agent支持单结构角色文件(.acs,角色数据与动画数据存于同一个文件),
也支持分离结构角色文件(.acf,角色数据存于.acf中,动画数据存于.aca中)。基于本地硬盘和网络的
应用程序可采用.acs文件,基于Web页面的HTML文件在浏览器中访问时会自动调用,习惯上多使用.acs文件。
---- 上述文件可从 http://www.microsoft.com//workshop/imedia/agent/default.asp下载。
三、 Microsoft Agent编程要点
---- 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属性为MyAgent)、Button1。
---- ⑵、定义变量。
Var
Peedy: IagentCtlCharacterEx;
Request1,Request2: IagentCtlRequest;
---- ⑶Agent主要属性、方法、事件。
---- ①Characters属性与Load、Unload方法:初始化Agent,加载动画数据,卸载动画人物
---- Request1 := MyAgent.Characters.Load( 'Peedy', 'C:\Windows\System\Peedy.acs' );
---- Peedy := MyAgent.Characters.Character( 'Peedy' );
---- MyAgent.Characters.Unload('Peedy');
---- ②Show与Hide方法:显示、隐藏Agent动画人物。参数Fast表示动画人物显示、隐藏的
速度。Fast为0表示Agent飞入、飞出,Fast为1表示Agent直接出现、消失,没有动画过程。
---- Peedy.Show(0);
---- Peedy.Hide(1);
---- ③StopAll、Stop方法:停止所有动作。
---- Peedy.StopAll('');
---- Peedy.Stop(Request);
---- ④Connected属性:Agent是否与Microsoft Agent服务器连接。
---- MyAgent.Connected := True;
---- ⑤Get_Height、Get_Width、Set_Height、Set_Width方法:获得、设置Agent动画人物的高度、宽度。
AgentHight := Peedy.Get_Height;
AgentWidth := Peedy.Get_Width;
Peedy.Set_Height( round(AgentHeight / 2 ));
Peedy.Set_Width( round( AgentWidth / 2 ));
---- ⑥MoveTo方法:参数x,y表示Agent动画人物移动到的坐标,参数Speed表示移动的速度。
---- Peedy.MoveTo( (Screen.Width-Peedy.Get_Width) Div 2, (Screen.Height-Peedy.Get_Height) Div 2, 2 );
---- ⑦Interrupt方法:中断指定角色的动画。在几十种动画动作中,有一类后缀名为“ing” 的动作
比较特殊,如“processing”、“searching”、“reading”、“writing”,一旦执行就必须通过调用
另外一个动画人物的Interrupt方法才能中断 。角色不能中断自身的动作,否则会导致异常。
Request1 := Robby.Play('reading');
Peedy.Interrupt(Request1);
而后被集成到Internet Explorer 4.0 Plus及更高版本中,目前版本为2.0,支持简体中文。
作为一种软件代理工具,Agent以其强大的交互功能、鲜明的人性特点、优美的操作界面和
简便统一的编程方法,对由菜单、按钮、提示框等组成的传统人机交互方式产生了很大影响,
在多媒体创作、Web应用、教育软件、软件帮助系统和辅助工具制作等方面,具有广阔的应用前景。
一、 Microsoft Agent技术简介
---- Agent一词的中文意思是“代理”,故名思意,这类代理软件的主要作用是提供一种
易于理解和使用的操作界面,接受用户的指令、代替用户完成某些复杂繁琐的工作、或为用户
提供帮助。科学研究表明:从人机工程的角度考虑,赋予电脑或程序更多人性化色彩,如支持
语音合成输出信息、语音识别输入指令、智能提示、动画等,能够充分提高人机交互的有效性
和易用性。
---- 我们知道,在Office 97帮助系统中有一种叫作Office助手的代理软件,其中幽默风趣的
动画人物,如“大眼夹”,能够根据用户的操作步骤“智能化”地提出一些建议或帮助信息。
与Office助手相比,Agent功能更加丰富强大,表现在:
Office助手沿用传统的不透明矩形窗口,窗口后面的背景被完全挡住;Agent动画人物本身是
一个“AlwaysOnTop”窗口,只有人物身体部分挡住背景,其余部分透明。
Office助手只允许Office 97的各个组件调用,Agent动画人物可由任何Windows程序调用;
Agent支持文字气球和输入提示条,在输出语音的同时把文字输出至一个卡通式文字气球中。
如果电脑系统中安装有Agent语音识别引擎,当用户按住输入键,如Scroll Lock键,在Agent
人物下方出现一个输入命令窗口,表示它正在“聆听”用户的语音命令。
Agent提供Genie、Merlin、Bobby和Peedy等动画人物,不仅具有优美诙谐的动作,而且可以
通过声卡、麦克风与用户交谈。
二、 Microsoft Agent安装方法
---- Agent是一种ActiveX控件,其服务器程序(C:\WINDOWS\MSAGENT\Agentsvr.exe)运行
在Win95/98/NT操作平台上,为其它调用Agent的客户程序提供服务。客户程序可以是利用VB、
C++、Delphi、VFP、PB等开发的应用软件,也可以是HTML文件中的Visual Script、Java Script
脚本语言代码。
安装Agent核心组件Msagent.exe。
安装Lernout & Hauspie TruVoice Text-to-Speech Engine(完成从文字合成语音的工作,
目前版本只支持英语)Cgram.exe。
安装Microsoft Command and Control Speech Engine(提供语音识别功能,目前版本只支持
英语)Actcnc.exe。
Agent动画人物人物数据文件。Agent支持单结构角色文件(.acs,角色数据与动画数据存于同一个文件),
也支持分离结构角色文件(.acf,角色数据存于.acf中,动画数据存于.aca中)。基于本地硬盘和网络的
应用程序可采用.acs文件,基于Web页面的HTML文件在浏览器中访问时会自动调用,习惯上多使用.acs文件。
---- 上述文件可从 http://www.microsoft.com//workshop/imedia/agent/default.asp下载。
三、 Microsoft Agent编程要点
---- 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属性为MyAgent)、Button1。
---- ⑵、定义变量。
Var
Peedy: IagentCtlCharacterEx;
Request1,Request2: IagentCtlRequest;
---- ⑶Agent主要属性、方法、事件。
---- ①Characters属性与Load、Unload方法:初始化Agent,加载动画数据,卸载动画人物
---- Request1 := MyAgent.Characters.Load( 'Peedy', 'C:\Windows\System\Peedy.acs' );
---- Peedy := MyAgent.Characters.Character( 'Peedy' );
---- MyAgent.Characters.Unload('Peedy');
---- ②Show与Hide方法:显示、隐藏Agent动画人物。参数Fast表示动画人物显示、隐藏的
速度。Fast为0表示Agent飞入、飞出,Fast为1表示Agent直接出现、消失,没有动画过程。
---- Peedy.Show(0);
---- Peedy.Hide(1);
---- ③StopAll、Stop方法:停止所有动作。
---- Peedy.StopAll('');
---- Peedy.Stop(Request);
---- ④Connected属性:Agent是否与Microsoft Agent服务器连接。
---- MyAgent.Connected := True;
---- ⑤Get_Height、Get_Width、Set_Height、Set_Width方法:获得、设置Agent动画人物的高度、宽度。
AgentHight := Peedy.Get_Height;
AgentWidth := Peedy.Get_Width;
Peedy.Set_Height( round(AgentHeight / 2 ));
Peedy.Set_Width( round( AgentWidth / 2 ));
---- ⑥MoveTo方法:参数x,y表示Agent动画人物移动到的坐标,参数Speed表示移动的速度。
---- Peedy.MoveTo( (Screen.Width-Peedy.Get_Width) Div 2, (Screen.Height-Peedy.Get_Height) Div 2, 2 );
---- ⑦Interrupt方法:中断指定角色的动画。在几十种动画动作中,有一类后缀名为“ing” 的动作
比较特殊,如“processing”、“searching”、“reading”、“writing”,一旦执行就必须通过调用
另外一个动画人物的Interrupt方法才能中断 。角色不能中断自身的动作,否则会导致异常。
Request1 := Robby.Play('reading');
Peedy.Interrupt(Request1);