找回密码
 立即注册
查看: 1779|回复: 0

使用Microsoft Agent 控件与电脑交谈-在VB中使用精灵助手

[复制链接]

6802

主题

10

回帖

2万

积分

管理员

积分
21861
发表于 2019-5-20 21:51:16 | 显示全部楼层 |阅读模式
  Microsoft Agent 控件比Office2000中的助手功能更加丰富和强大,它提供的动画人物不仅有生动、有趣的动作,而且还能通过声卡、麦克风与用户进行交谈,这些功能使计算机更具人性魅力,其应用前途相当广阔。Microsoft Agent控件的内部机制很复杂,但用VB来操纵它却是非常方便,本文将介绍VB 6.0调用Microsoft Agent 控件的基本方法。

  首先在VB6.0中新建立一个工程,在工程菜单中选择部件à在Microsoft Agent control2.0控件前打勾,现在工具箱上就有了一个小人的图标,这就是我们主要讨论的Agent控件。

  先把该控件拖放到窗体上,然后在工程中新建一个模块。在模块中添加以下代码:
Public strA As String
Public Merlin As IAgentCtlCharacterEx
Public AgentRequest As IagentCtlRequest

  第一句Public strA As String声明一个公有的字符串变量用来存放动画人物的路径。

  Public Merlin As IagentCtlCharacterEx第二句声明一个动画人物对象名字叫Merlin

  Public AgentRequest As IagentCtlCharacterEx这句声明一个装动画人物的容器类。

  在使用动画人物之前,先要找到动画人物文件。一般动画人物的文件后缀名为acs。把该文件拷贝到工程所在的文件夹(可以使用搜索功能找到更多的本机存在的动画人物,搜索*.acs就可以了),本篇中引用的动画人物是魔法师默林。

  把默林拷贝到工程文件夹后,在窗体的load事件中添加如下代码:
strA = App.path & "\默林.acs"
Set AgentRequest = Agent1.Characters.Load("Merlin", strA)
Set Merlin = Agent1.Characters.Character("Merlin")
Merlin.Show
strA = App.path & "\默林.acs"这句把路径设置为动画人物所在处,这里是本工程文件夹中。

  Set AgentRequest = Agent1.Characters.Load("Merlin", strA)加载动画人物并给它起名叫Merlin,接着把它放入在模块中建立的动画人物容器。

  Set Merlin = Agent1.Characters.Character("Merlin")这句是把动画人物容器中的人物起个名字以便在程序中使用。

  我们现在其实已经在程序中建立了一个动画人物,它的名字在程序中叫Merlin,其实Merlin就是默林。

  Merlin.Show这句是让默林显示。

  每一个动画人物所能演示的动作都不相同,可以使用名叫Agent View的软件来查看每个动画人物的动作。

  Merlin.Think()方法可以使默林开始想
如: Merlin.Think(“这是什么问题呢?”)
Merlin.Play()方法可以使默林做动作
如:Merlin.Play(“read”)可以使默林做读书的动作
Merlin.moveto x,y可以使默林移动到屏幕的x,y坐标。
如Merlin.moveto 100,100因为VB使用的坐标单位是绨,而动画人物使用的坐标是像素,所以中间要有个转换关系,1缇是1/440英寸,而一像素等于1/72英寸。

  Microsoft Agent 控件的语音合成功能

  Microsoft Agent控件具有语音识别能力,用户可以向动画人物发出语音命令(同时按住Scroll Lock键)。

  Microsoft Agent控件支持英语的语音合成功能,只需输入句子的文字,便会生成该句子的语音信号并通过声卡、音箱播放出来。语音合成功能通过调用IAgentCtlCharact er::Speak()方法来实现。输出中文时不能用上述方法,只能用WAV文件代替,给Speak()方法的第一个参数传递文字气球中包含的文字,给第二个参数传递一个WAV文件路径。

  如:Merlin.Speak "欢迎光临", "c:\welcome.wav"

  Microsoft Agent控件为每个 Agent动画人物提供一个特殊命令窗口,用以显示该动画人物能够接受的所有语音命令。该命令窗口中的命令不能用鼠标或键盘来选取,只能通过语音。可以用IAgentComands::Add()方法来为命令窗口添加自定义命令。第一个参数是命令的标识符ID,第二个参数是该命令在命令窗口中的显示标签,第三个参数是该命令对应的语音识别句子。当用户通过麦克风向动画人物发出命令时会激发IAgent的Command事件, 可以编写一个接收Command事件的过程来完成与语音命令相对应的任务。

Private Sub Command3_Click()
  Static initialized As Boolean
  ' 添加自定义命令
  If Not initialized Then
   Merlin.Commands.Add "Word", "Run Word", "word", True, True Merlin.Commands.Add "Time", "What time is it?", _
"What time is it?" , True , True
   Merlin.Commands.Add "Bigger", "Bigger", "Bigger", True, True
   Merlin.Commands.Add "Smaller", "Smaller", "Smaller", True, True
   initialized = True
  End If
   Merlin.Show
   Merlin.Speak "Can I help you?
End SubPrivate Sub
MyAgent_Command(ByVal Us erInput As Object)
  Select Case UserInput.Name
  Case "Time"
  ' 当听到"What time is it?"后回答当前时间
  Merlin.Speak "The time is " & Time
  Case "Word"
  ' 当听到"word"后,便运行MS Word
  Merlin.Speak "Yes,sir!"
  Shell "d:\winword\winword.exe", vbNormalFocus
  Case "Bigger"
  ' 当听到"bigger"后,Merlin会放大
  Merlin.Width = Merlin.Width * 1.5
  Merlin.Height = Merlin.Height * 1.5
  Case "Smaller"
  ' 当听到"samller"后,Merlin会缩小
  Merlin.Width = Merlin.Width / 1.5
  Merlin.Height = Merlin.Height / 1.5
  End Select
End Sub

  现在我们已经知道如何使用Microsoft Agent控件来和计算机进行交互了。
后附默林的一些常用动作:(在play方法中使用)
write:写
read:读
writeing:写一段时间
reading:读一段时间
DoMagic1:做第一种魔法
DoMagic2: 做第二种魔法
Search:搜索
Suggest:一个电灯
Process:熬药
Decline:不知道的样子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表