在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 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所示:
图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 En |