×

在VB.NET中应用Agent技术

Kalet Kalet 发表于2009-03-20 12:00:14 浏览195 评论0

抢沙发发表评论

在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”组件在VB.NET中应用Agent技术
点击“确定”后,会在工具箱中新增加一个“Microsoft Agent Control 2.0”组件,如




二、设计程序界面

添加三个Button组件,让用户操作助手的不同功能。
一个ComboBox组件,让用户选择助手的动作。
一个TextBox组件,让用户输入助手朗读的文字。
一个Agent组件
两个Label组件


三、编写代码

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测试程序,就可以加载并显示助手了



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 阅读在VB.NET中应用Agent技术
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
                        objAgent.Think(TextBox1.Text)
                    End If
                Case 6
                    objAgent.Play(""Reading"")
                Case 7
                    objAgent.Play(""Write"")
                Case 8
                    objAgent.Play(""Pleased"")
                Case 9
                    objAgent.Play(""Congratulate"")
            End Select
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub


图5:助手的朗读动作


3、卸载助手

可以使用AxAgent1.Characters.Unload方法来卸载助手,实现代码如下:

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Try
            AxAgent1.Characters.Unload(

""merlin"")
            Button2.Enabled = False
            Button3.Enabled = False
            Label1.Enabled = False
            Label2.Enabled = False
            ComboBox1.Enabled = False
            TextBox1.Enabled = False
            Button1.Enabled = True
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try在VB.NET中应用Agent技术
    End Sub


群贤毕至

访客