没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2004-02-04 11:37:00.000|阅读 2101 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
Microsoft Agents
介绍
这一天终于到来了。你现在可以逐字地告诉你的计算机运行一个报告,阅读一封信或者播放一首歌曲。本文将介绍如何利用Agent的文字到语言的转换功能。你将学会如何扩展VBA使其包括ActiveX,如何编写一个调用Agent来大声朗读活动Word文档的应用程序。
与包括Microsoft
Office Assistant 在内的任何前辈都不相同,Microsoft Agent 1.5使用多个角色--Genie, Merlin, 和
Robby(见图1)--来提供人/机接口。每个角色都经过三维处理,并具有一套独特的卡通制作。
安装
不过,为了充分利用Agent,你需要做一些准备工作。你必下载和安装一些组件。它们均可以在http://www.microsoft.com/workshop/prog/agent提供。利用这些组件,可以下载这个压缩的可执行文件,并运行它以实现安装。这些组件包括:
然后下载如下文件并将其放在\Program Files\Microsoft
Agent\Characters目录之中。
你还应该下载Agent文档资料。至少,你将需要Programming the Microsoft Agent
Control, Programming the Microsoft Agent Server Interface, 以及用于每个角色的资料,例如用于Robby
Character的Microsoft Agent Animations。为了口述命令,你还需要一个声卡和一个话筒。
Agent的
第一个使命:仅仅露一面
在第一个项目中,我们将编写一个测试过程来证实Agent极其组件已被正确安装。第一次,我们不要求太多的东西;仅仅需要Agent露一面说几句话即可。我们将使用Genie来测试运行。
首先启动Microsoft
Word 97,通过按住AL!(或选择Tools | Macro | Visual Basic Editor)来激活Visual Basic
Editor。下一步,单击Project
Explorer,或按Cr。该操作将为你提供一个列表,里面包含了你已经打开的所有项目。请选中Normal项目(关于Normal的更为详细的信息,请参阅第5页的"Normal模板")。
创建表单。通过从Project
Explorer或菜单中选择Insert |
UserForm来插入一个表单。通过在Properties窗口中改变如下属性来修改UserFform(为了显示Properties窗口,可能需要按4键)。
Caption:
Agent Control Form
Width: 100
Height:
85
在表单上放置两个CommandButtons。然后将它们的Caption属性改为Start Agent和Stop
Agent,以便它们可以在图2中出现。
(如果您的浏览器不支持inline frames,请点击这里在单独的页面观看此图)
图2 在Visual Basic
IDE中创建第一个示范:在UserForm.上放置两个按钮
控制和引用。对于每个新项目,向DLL和OCX添加包含有过程、方法和你正在引用的其他代码的引用是十分重要的。选中Tools
| References来激活References对话框。向下滚动,并选中Microsoft Agent Control
1.5。
下一步,确认Toolbox已通过单击或从View | Toolbox菜单中选中而激活。通过选中Tools | Additional
Controls来激活Additional Controls对话框;找到阅读Microsoft Agent Control
1.5的行,并单击它的复选框。完成之后,你将看到Agent图标位于Toolbox的下半部分)。
(如果您的浏览器不支持inline frames,请点击这里在单独的页面观看此图)
图3 显示Toolbox的Visual Basic
IDE;Agent图标已被添加到Toolbox.
下一步,我们要编写可以使Genie出现和消失的子程序。首先请单击顶部标签为Start
Agent的按钮。你将看到Visual Basic
IDE已经启动了CommandButton1_Click子程序。向顶部滚动,输入如下的语句:
Const DATAPATH = _
"C:\Program Files\Microsoft Agent\Characters\genie.acs"
Dim Genie As
IAgentCtlCharacter
Dim SpeakString As
String
图4中列出了全部的代码。这些语句声明了必要的变量和常量。Microsoft建议在所列出的目录中安装Agent角色文件(ACS文件),但你也可以将它们放在其他地方--只要你为DATAPATH常量输入了正确的路径即可。
Option
Explicit
Const DATAPATH = _
"C:\Program Files\Microsoft
Agent\Characters\genie.acs"
Dim Genie As IAgentCtlCharacter
Private Sub
UserForm_Activate()
Agent1.Characters.Load "Genie", DATAPATH
Set Genie =
Agent1.Characters("Genie")
End Sub
Private Sub
CommandButton1_Click()
Genie.Show
Genie.MoveTo 100, 100
Genie.Speak "My
name is Genie. Your wish is my command."
End Sub
Private Sub
CommandButton2_Click()
Genie.MoveTo 350, 250
Genie.Hide
End
Sub
Private Sub UserForm_Deactivate()
Set Genie = Nothing
End
Sub
图4 本代码阐述了基本的Genie控制
当UserForm被激活的时候,可以创建如下将被执行的代码:
Private
Sub UserForm_Activate()
现在我们通知Agent对象将Genie
角色加载到它的Characters集合之中,这样我们就可以访问它了:
Agent1.Characters.Load "Genie",
DATAPATH
下一步,使用Set语句来简化后面的代码:
Set Genie =
Agent1.Characters("Genie")
这不是必需的,但以后的语句需要精心编制。例如,需要如下语句来显示Agent:
Agent1.Characters("Genie").Show
这样则更加直接:
Genie.Show
下一行为SpeakString变量赋了一个值。在本例中,我们通知Microsoft
Agent介绍它自己,然后为语音识别输入做准备(在本例中,我们不为该部分编写代码)。
SpeakString = "My name is Genie.
Your wish is my
command."
让我们通过调用Genie并让它朗读SpeakString的值来完成代码。我们将编写CommandButton1_Click子程序来完成该项任务。Show是用来让用户可以看见Genie的命令,Speak将触发Microsoft的文字到语音转换工具朗读在它前面的文字。
Private
Sub CommandButton1_Click()
Genie.Show
Genie.Speak SpeakString
End
Sub
CommandButton2_Click子程序将把Genie隐藏起来。
Private Sub
CommandButton2_Click()
Genie.Hide
End
Sub
最后,完成之后,我们必须通过使用如下语句来销毁Agent对象:
Private Sub
UserForm_Deactivate()
Set Genie = Nothing
End
Sub
现在你就可以准备启动Agent了。通过单击Run按钮,或按5键来测试一下,看看你的计算机是否已被正确设置了。该操作将激活这个表单,Agent服务器将在加载表单的时候初始化,在用户退出表单的时候销毁。当按下Start
Agent按钮的时候,Genie将出现并说:"My name is Genie. Your wish is my
command."(如图5所示)。它将在按下Stop Agent的时候消失。
(如果您的浏览器不支持inline frames,请点击这里在单独的页面观看此图)
图5
示范应用程序在运行:Genie出现了
因为我们正在从模型对话框中操作Agent,所以这种实现并不是非常现实的,尽管它完全可用于示范或开发。下一步,我们将做一些更加有用的工作;我们将把Agent融入Word
97,并让Robby为我们朗读。
Agent'的第二个使命:为我朗读
目标是在Word
97中放置一个按钮,当按下它的时候,将调用将要大声朗读活动文档的Agent--这是从另一个侧面了解你的作品的好方法。
让我们从字符路径常量的声明开始:
Const ROBBYPATH = _
"C:\Program Files\Microsoft
Agent\Characters\robby.acs"
用于Agent 和角色的变量为:
Dim MSAgent As
Agent
Dim Char As Object
像以前一样,然后我们使用New关键字来创建一个Agent对象:
Set
MSAgent = New Agent
在创建完Agent对象之后,我们必须启动Agent
ActiveX服务器。为了实现这一点,我们将Agent对象的Connected属性设置为True:
MSAgent.Connected =
True
然后,我们加载字符并将它分配给Object变量:
MSAgent.Characters.Load "Robby",
ROBBYPATH
Set Char =
MSAgent.Characters("Robby")
准备工作就做完了。现在该轮到我们的Agent表现了。
He
walk…
控制Agent的屏幕行为是很简单的。大部分操作可以通过使用Character对象的Play函数来实现。Play函数有一个参数--一个由Animation字符串组成的字符串。例如,如下语句将导致Robby
挥手致意:
Char.Play "Wave"
而如下语句将导致他向右移动(Robby使用一个黑色背包移动):
Char.Play
"MoveRight"
图6列出了一个用于Robby的Animation字符串的小子集,而图7到11则显示了其中的几个。正如你所看到的,Robby可以做很多动作。可提供的Animation字符串随角色的不同而不同,因此你需要获得有关每个你想使用的角色的资料。例如,在用于Robby
的Microsoft Agent
Animations中,Robby有94个Animation字符串。
Animation描述
Acknowledge
Nods head
Alert Straightens and raises eyebrows
Announce Prints output
and reads
Blink Blinks eyes
Declines Raises hands and shakes head
DontRecognise Holds hand to ear
GestureLeft Gestures to the left
GestureRight Gestures to the right
GetAttention Raises and shakes arms
GlanceLeft Looks left briefly
GlanceRight Looks right briefly
Hear_1
Turns head left
Idle2_1 Crosses arms
Idle2_2 Removes head and makes
adjustment
LookLeft Looks to the left
MoveUp Flies up
Processing
Presses buttons in looping animation
Reading Reads in looping animation
Sad Makes sad expression
Searching Looks through toolbox in looping
animation
Think Tilts head and scratches
Wave Waves
Write Takes out
clipboard, writes and looks up
图6
为Robby角色选择Animation字符串的子集:共有94个
不过,使用Play,Robby将保留在相同的屏幕位置里。为了实际上在屏幕周围移动Agent,你可以使用Character对象的MoveTo过程,该过程有两个参数--x和
y屏幕坐标。下面是一个例子:
Char.MoveTo 200,
300
如果你想让角色仍然移动到屏幕之上,可以在调用Show之后使用MoveTo;在第一次引用时,如果你想让角色出现在特定的位置,可以在调用Show之前使用MoveTo来放置Agent。既然我们已经知道如何创建Agent手势以及如何移动它,那么就让我们使Robby说话吧。
He Talks...
让Robby说话也是很简单的;只需使用Character对象的Speak函数即可。Speak函数有一个参数--将要朗读的文字。文字可以有几种形式,包括文字串、文本文件或URL。在我们的例子中,我们想让Agent朗读一个Word文档,因此我们使用如下的语句:
Char.Speak ActiveDocument.Content
如果你做过任何Word 97
VBA编程,那么就会明白ActiveDocument.Content指的是ActiveDocument属性的Content属性,换句话说,就是当前选定的Word文档的主体文字。这条语句将导致Robby在文字气球中显示相关的文字的同时,大声朗读文档。多棒啊!
这条独立的语句是可以工作的,但是我们可以做得更好。步骤如下:
Char.Play
"Read"
Char.Speak ActiveDocument.Content
Char.Play
"Readreturn"
这几条语句将导致Robby从它的胸部打印出一些输出,在完成之后释放文档,以及在实际朗读之前开始阅读。"ReadReturn"
Animation将导致Robby返回,在阅读之后停在中间位置。许多动画都与"...Return"动画相关联,因此可以做到动作之间的平滑转换。
现在,让我们将所学到的东西融合在一起,为Robby将要完成的一个短的动作序列编写脚本。我们将把它放在一个脚本之中,以便可以从Word
97中调用它,如图12所示。
Option Explicit
Const ROBBYPATH =
"C:\Program
Files\Microsoft Agent\Characters\robby.acs"
Dim MSAgent As Agent
Dim
Char As Object
Sub Speak()
Set MSAgent = New
Agent
MSAgent.Connected = True
MSAgent.Characters.Load "Robby",
ROBBYPATH
Set Char = MSAgent.Characters("Robby")
With Char
.Top =
125
.Left = 185
.Show
.Play "Greet"
.Play "GreetReturn"
.MoveTo
600, 400
.Play "Read"
.Speak ActiveDocument.Content
.Play
"ReadReturn"
.Play "Idle2_2"
.Play "Wave"
.Play
"WaveReturn"
.Hide
End With
End Sub
图12
VBA代码让Robby在屏幕上特定的坐标位置出现,挥手致意说喂,飞向屏幕的右下角,朗读活动的Word
97文档,完成调整,挥手致意说再见,和消失。
下一步,我们必须在Word中做一点工作。
He Crawls on His Belly
Like a Reptile
为了将新的宏与自定义的工具栏关联起来,请选择View | Toolbars |
Customize来显示Customize对话框。单击New按钮。为新工具栏取名为"Agent",使其可以提供给Normal.dot。这个工具栏现在就可以使用了。在Customize对话框中,单击Commands页并选中Macros。
Normal.NewMacros.Speak宏现在就应该可以使用了;将它拖向工具栏,然后在I光出现之后释放它。右击该按钮,将它的名字改为"Read",如果你喜欢的话,还可以为它提供一个图标。
通过返回到Customize对话框并再次选中该对象可以从菜单中调用新宏。这次,将它拖向Tools菜单(但不让它走)。这个菜单将打开并滚向底部。当你在自己希望的位置看到I光线之后,释放按钮。可以按照与以前相同的方式改变菜单项的属性--通过右击。
结论
我们已经介绍了Microsoft
Agent的基础知识,并且列出了你探索Agent的潜力所需要的软件和硬件。然后我们继续利用Agent的语音功能来实现一个有用的Word宏来大声朗读文档。
记住Agent可以作为ActiveX提供也是十分重要的。这就意味着它可以使Web站点更加充满活力。例如,你可以访问位于http://www.argolink.com/agent/merlinscorner/druidxicon.html (见图13)的Argo Technologie的Web站点。你还可以从Microsoft的 Agent页(当你探索Microsoft
Agents的时候,将对这个页面十分熟悉)链向它和其他启用了Agent的站点。
图13 你可以在Argo
Technologies站点的Web上看到Microsoft Agent在运行
图14
了解这个站点;正在用有价值的工具和信息加载
本文仅仅涉及到了一些表面的知识。Microsoft
Agent是一项主要的技术(光Programming the Microsoft Agent
Control文档就有75页!),因此在熟练之前,你将需要花上一段时间。好消息是,你将体会到很多乐趣。
本文中所引用的文件可以从Informant
Web站点下载,网址为:http://www.informant.com/mod/modnewupl.htm.:文件名为
MOD9801SL.ZIP。
Shannon M. Lake, Sr., CET, NCT, 和 MCP是OMNIFORCE
Group的CEO,该组织是一个国际远程通信和软件工程咨询组织,其重点是设计和精炼公司的新的和现有的信息、软件、远程通信和/或数据通信系统。Shannon目前正在开发一个新的操作系统。可以通过lake@omniforce.com, http://www.omniforce.com/lake, 或 (800)
367-9946与他联系。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号