日期:2012-10-27  浏览次数:20530 次

在OFFICE帮助文件,金山毒霸,瑞星杀毒软件中有一个助手的功能,用来给用户提出帮助信息或建设。在Visual Basic .Net中使用Microsoft Agent Control 2.0组件能轻松实现这一功能。
一、添加Agent组件
启动Visual Studio .NET2003,新建一个Visual Basic .Net应该程序。在Visual Basic .Net中右击工具箱,选择“添加/移除项(I)…”或者在工具栏中选择工具菜单,在下拉菜单中选择“添加/移除工具箱项(X)…”,在弹出的“自定义工具箱”中选择COM页面,选择中“Microsoft Agent Control 2.0”组件,如下图1所示:
图1: 添加Agent组件

点击“确定”后,会在工具箱中新增加一个“Microsoft Agent Control 2.0”组件,如
图2所示:

图2:添加Agent组件成功
二、设计程序界面
添加三个Button组件,让用户操作助手的不同功能。
一个ComboBox组件,让用户选择助手的动作。
一个TextBox组件,让用户输入助手朗读的文字。
一个Agent组件
两个Label组件
运行界面图3所示:

图3:运行界面
三、编写代码
1、加载助手
要使用Agent必须先把助手加载到程序中,可以使用AxAgent1.Characters.Load方法来加载助手,并加助手ID赋给事先定义好的助手类型objAgent,后面就是通过objAgent操作助手,实现代码如下:
'定义助手类型
Dim objAgent As AgentObjects.IAgentCtlCharacterEx
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
'加载助手
AxAgent1.Characters.Load("merlin", "C:\WINNT\msagent\chars\merlin.acs")
objAgent = AxAgent1.Characters("merlin")
'显示助手
objAgent.Show()
Button2.Enabled = True
Button3.Enabled = True
Label1.Enabled = True
Label2.Enabled = True
ComboBox1.Enabled = True
TextBox1.Enabled = True
Button1.Enabled = False
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
按F5测试程序,就可以加载并显示助手了,所图4如所示:

图4:加载并显示助手
2、实现助手动作
加载助手后就可以让助手执行指定的动作了。
主要通过Play方法执行助手动画, Play方法有一个参数Animation,表示指定动作。 AxAgent组件提供了几十种动助手动作,下面给出一些常用的助手动作:
参数 动作
RestPose 恢复初始状态
Acknowledge 承认
LookDown 向下看
Sad 悲伤
Alert 警告
LookDownBlink 向下看眨眼
Search 寻找
Announce 声明
LookUp 向上看
StartListening 开始聆听
Blink 眨眼
LookUpBlink 向下看眨眼
StopListening 停止聆听
Confused 迷惑
LookLeft 向左看
Suggest 建议
Congratulate 祝贺
LookLeftBlink 向左看眨眼
Surprised 吃惊
Decline 拒绝
LookRight 向右看
Think 思考
DontRecognize 不承认
LookRightBlink 向右看眨眼
Wave 挥动
Explain 解释
MoveDown 向下移动
Write 书写
GestureDown 向下姿势
MoveUp 向上移动
Processing 计算
GestureUp 向上姿势
MoveRight 向右移动
Reading 阅读
GestureLeft 向左姿势
MoveLeft 向左移动
Searching 寻找
GestureRight 向右姿势
Pleased 高兴
Writing 书写
GetAttention 获得注意
Read 阅读
Greet 问候
我们选取几种常用的动作参数举例
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("显示")
ComboBox1.Items.Add("问候")
ComboBox1.Items.Add("隐藏")
ComboBox1.Items.Add("移动")
ComboBox1.Items.Add("朗读")
ComboBox1.Items.Add("思考")
ComboBox1.Items.Add("阅读")
ComboBox1.Items.Add("书写")
ComboBox1.Items.Add("高兴")
ComboBox1.Items.Add("祝贺")
ComboBox1.SelectedIndex = 0
End Sub
'根据用户不同的选择,执行不同的动作
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
Select Case ComboBox1.SelectedIndex
Case 0
objAgent.Show()
Case 1
objAgent.Play("Greet")
Case 2
objAgent.Hide()
Case 3
objAgent.MoveTo(Me.Width, Me.Height)
Case 4
If TextBox1.Text <> "" Then
objAgent.Speak(TextBox1.Text)
End If
Case 5
If TextBox1.Text <> "" Then