goodwangLib / VB.Net / Visual Basic .NET中操作MsAgent

0 0

   

Visual Basic .NET中操作MsAgent

2013-10-29  goodwangL...
.Net FrameWork SDK虽然推出了1.0正式版(版本号3705),但要用它来接管对计算机的所有操作,还不能完全实现,在用Visual Basic .Net编写应用程序的时候,很多功能的实现,往往是把.Net FrameWork SDK中的类库和Windows平台中现有的的API函数、COM组件组合在一起使用。虽然这有违背微软推出Visual Basic .Net的目的,那就是开发跨平台的应用程序。但在目前.Net FrameWork SDK并没有极大丰富的情况下,这种实现方式是最简洁、最实用的。微软有可能在下一个版本的.Net FrameWork SDK中文版中将加入类似现有MsAgent的类库,并且这些类库比现有的MsAgent有一个最大的优点,就是加入了中文的Text-To-Speech引擎,也就是说能够说中文了。

  Visual Basic .Net目前操作MsAgent使用的COM组件名称是" Microsoft Agent Control 2.0"。这个COM组件并没有随着Windows系统一起发布,必须要下载、安装这个组件。"http://www.microsoft.com/msagent/downloads.htm"是微软提供的MsAgent组件的下载地址。要保证Visual Basic .Net能够成功操作MsAgent,必须要下载并安装四个程序,具体如下:

  1、 微软MsAgent核心组件(Microsoft Agent core components),如果你的机器是Windwos Me、Windows 2000、和Windows XP,那么就没有必要下载并安装这个核心组件了,因为它已经随着操作系统一起发布了。

  2、 语言组件,虽然微软在下载地址的选择框中提供了简体中文的语言组件下载,但MsAgent中的精灵依然不能说中文,因为微软没有提供Text-To-Speech的中文引擎。不过读者可以在选择框中选择"Simplified Chinese",然后下载并安装。

  3、 MsAgent中的Agent精灵。在当前地址中提供了四种精灵,分别是吉利(Genie)、莫林(MerLin)、罗比(Bobby)和彼得(Peedy)。这四种精灵都有不同的造型,不同的表情。当然如果你认为微软提供的这些精灵还不能满足你的要求,你可以通过微软当前地址提供的精灵编辑工具制造自己的精灵。为了保证下面程序正确运行,必须下载并安装全部四个精灵。

  4、 Text-To-Speech引擎。这是精灵发声的引擎,正是由于没有提供发出中文的Text-To-Speech引擎,才导致精灵无法说中文。如果你是法国人,想让精灵说出法文,必须保证在第二步中语言组件中选择"French",并且在Text-To-Speech引擎中也选择"French",当然你要精灵说的文本也应该用法文来书写。在下面的程序中,精灵要说的是英文,所以下载安装Text-To-Speech英文引擎就可以了,读者可以根据自己的爱好选择是"American English"(美国英语),还是"British Englist"(英国英语)。

  在上述的四个程序都成功下载并安装以后,下面将结合一个具体的示例来介绍Visual Basic .Net操作MsAgent的方法。

  一、 本文中程序设计、调试、运行的软件环境:

  (1).微软公司视窗2000服务器版

  (2).Visual Studio .Net正式版,.Net FrameWork SDK版本号3705

  二、 Visual Basic .Net操作MsAgent的具体实现步骤

  由于" Microsoft Agent Control 2.0"是一个COM组件,COM组件是非托管代码文件,
要在Visual Basic .Net中使用COM组件,必须实现其从非托管代码组件到托管代码组件的转换。.Net框架把这种转换过程叫"互操作"。在Visual Basic .Net集成开发环境下,实现"互操作"是非常容易的。在互操作完成之后,就可以像使用其他组件那样使用转换后的MsAgent组件了。下面通过一个示例来具体介绍一下,Visual Basic .Net集成开发环境是如何对COM组件进行互操作,和转换后的MsAgent组件的使用方法。

  1、 启动Visual Studio .Net。

  2、 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

  3、 将【项目类型】设置为【Visual Basic项目】。

  4、 将【模板】设置为【Windows应用程序】。

  5、 在【名称】文本框中输入【VB.NET使用MsAgent】。

  6、 在【位置】的文本框中输入【E:\VS.NET项目】,然后单击【确定】按钮,这样VB.NET使用MsAgent的项目文件就产生了。

  7、 把当前窗口切换到【Form1.vb [设计]】后,选择【工具箱】|【Windows窗体】,点击鼠标右键,在弹出的菜单中选择【自定义工具箱】菜单。具体如图01所示:


图01:自定义工具箱

  弹出【自定义工具箱】对话框,选择其中的【COM组件】页面中,在【名称】栏中选择【Microsoft Agent Control 2.0】,具体如图02所示:


图02:Visual Basic .Net操作MsAgent的【添加引用】对话框

  单击【确定】按钮,则在【工具箱】的【Windows组件】组件栏最后中,新增了一个MsAgent组件,具体如图03所示:


图03:成功引入MsAgent组件



  8、 切换到【Form1.vb [设计]】窗口,并从【工具箱】中的【Windows窗体组件】中往窗体中拖入下列组件,并执行相应操作:

  一个ComboBox组件,用以让读者选择要出现的精灵名称。

  一个TextBox组件,用以输入精灵朗读的文字,由于程序中设定的精灵朗诵的语言为英语,所以这里输入的是英文单词。

  一个MsAgent组件

  二个Label组件

   四个Button组件,名称分别是Button1、Button2、Button3和Button4,用以实现和MsAgent组件相关的一些功能。并 在这些组件加入到窗体后,分别在【Form1.vb [设计]】窗口中双击这四个组件,这样Visual Basic .Net集成开发环境会自动产生这四个组件的Click事件对应的处理代码。

  9、 把Visual Basic .Net集成开发环境的当前窗口切换到Form1.vb的代码编辑窗口,并在Form1.vb代码中的InitializeComponent过程之前加入下列代码:

Dim PlayChar As AgentObjects.IAgentCtlCharacterEx

  10. 并用下列的代码替换Form1.vb中的由系统自动产生的InitializeComponent过程的代码,下列代码的功能是初始化上述组件:

  界面设计和功能实现的前期准备工作就完成了,具体如图04所示:


图04:Visual Basic .Net操作MsAgent程序的设计界面

  10. Visual Basic .Net中实现装入精灵。

  当程序中装入精灵后,精灵就会显示在Windows的状态栏 中,具体思路是把各个精灵先强制转换成一个Object的对象,精灵对应的扩展名是"acs",然后调用MsAgent组件的"Load"方法把对象加入 就可以了,并根据装入的精灵类型来初始化上面定义的一个AgentObjects.IagentCtlCharacterEx接口的实例,后面对精灵的操 作就是通过这个实例中方法来实现的。具体实现方法是用下列的代码替换Form1.vb中的Button1的Click事件的处理代码:

Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs )   Handles Button1.Click
'根据使用者的不同选择,装入不同的精灵类型
 Select Case ComboBox1.Text
  Case "Genie"
   Dim myObject As Object = CType ( "genie.acs" , Object )
   '装入吉利
   AxAgent1.Characters.Load ( "genie" , myObject )
   PlayChar = AxAgent1.Characters ( "genie" )
  Case "MerLin"
   Dim myObject As Object = CType ( "merlin.acs" , Object )
   '装入莫林
   AxAgent1.Characters.Load ( "merlin" , myObject )
   PlayChar = AxAgent1.Characters ( "merlin" )
  Case "Robby"
   Dim myObject As Object = CType ( "robby.acs" , Object )
   '装入罗比
   AxAgent1.Characters.Load ( "robby" , myObject )
   PlayChar = AxAgent1.Characters ( "robby" )
  Case "Peedy"
   Dim myObject As Object = CType ( "peedy.acs" , Object )
   '装入彼得
   AxAgent1.Characters.Load ( "peedy" , myObject )
   PlayChar = AxAgent1.Characters ( "peedy" )
 End Select
 Button1.Enabled = False
 Button2.Enabled = True
 Button3.Enabled = True 
 Button4.Enabled = True
End Sub

  11. 在Visual Basic .Net中实现精灵朗诵文字动作:

  精灵实现朗诵文字是通过 AgentObjects.IagentCtlCharacterEx接口中的Speak方法,在调用Speak方法的时候,必须注意二点:其 一,Speak方法有二个参数,第一个参数就是精灵朗诵的内容,在调用Speak方法时,必须保证朗诵的内容不为空;其二,在调用Speak方法朗诵之 前,必须先调用其Show方法,把精灵显示出来,否则虽然调用了Speak方法,由于没有先显示精灵,也依然无法通过精灵来朗诵。具体的实现方法是用下列 代码替换Form1.vb中的Button2的Click事件对应的处理代码:

Private Sub Button2_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button2.Click
 PlayChar.LanguageID = 1033
 '设定精灵朗读的语言种类对于地ID,1033是设定为英文
 PlayChar.Show ( False )
 '显示精灵
 If TextBox1.Text.Length <> 0 Then
 '判断TextBox1中是否有内容
  PlayChar.Speak ( TextBox1.Text , "" )
  '开始朗诵TextBox1中的内容
  PlayChar.Hide ( True )
 End If
End Sub

  12. 在Visual Basic .Net中实现精灵的思考动作:

  精灵思考动作和朗诵动作非常类似,最大区别是思考动 作没有发出声音,而朗诵动作是有声的。实现精灵思考使用的是AgentObjects.IagentCtlCharacterEx接口中Think方 法,Think方法后面有一个参数,就是精灵思考的内容。在调用Think方法的时候,所要注意的问题和Speak方法一样,读者可参阅上面调用 Speak方法要注意的二个问题。具体的实现方法是用下列代码替换Form1.vb中的Button3的Click事件对应的代码:

Private Sub Button3_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button3.Click
 PlayChar.LanguageID = 1033
 '设定精灵朗读的语言种类对于地ID,1033是设定为英文
 PlayChar.Show ( False )
 '显示精灵
 If TextBox1.Text.Length <> 0 Then
 '判断TextBox1中是否有内容
  PlayChar.Think ( TextBox1.Text )
  PlayChar.Hide ( True )
 End If
End Sub

  13. 卸载装入的精灵。

  由于本程序可以在一个程序中使用多个精灵,但由于变量只设定了一个,所以在使用另外一个精灵的之 前,必须先卸载掉已经装入的精灵,否则就会程序异常。卸载装入的精灵使用的是Unload方法,Unload方法后面是已经装入的精灵对应的名称字符串。 具体实现方法是用下列代码替换Button4的Click事件对应的处理代码:

Private Sub Button4_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button4.Click
 Select Case ComboBox1.Text
  Case "Genie"
   AxAgent1.Characters.Unload ( "genie" )
  Case "MerLin"
   AxAgent1.Characters.Unload ( "merlin" )
  Case "Robby"
   AxAgent1.Characters.Unload ( "robby" )
  Case "Peedy"
   AxAgent1.Characters.Unload ( "peedy" )
 End Select
 Button1.Enabled = True
 Button2.Enabled = False
 Button3.Enabled = False
 Button4.Enabled = False
End Sub

  在上述步骤都正确完成,并保持后,编写Visual Baisc .Net中操作MsAgent程序的全部工作就完成了。此时单击快捷键【F5】就可以运行程序了,在选择框中选择要显示的精灵类别,单击程序中的【装入】 按钮,在【输入提示内容】文本框中输入要精灵提示的内容后,单击【朗诵】按钮,此时精灵就会把【输入提示内容】文本框中的内容逐个朗诵一遍,单击【思考】 按钮,此时精灵就会把【输入提示内容】文本框中内容逐个显示一下,但并不朗诵。如果你想要换一个精灵来朗诵、思考【输入提示内容】文本框中的内容,请先单 击【卸载】按钮,然后在【选择精灵】选择框中选择精灵,在重复上面的操作就可以了。图05和图06是程序分别选择不同精灵的运行界面:


图05:Visual Basic .Net操作MsAgent程序选择Genie精灵时的运行界面


图06:Visual Basic .Net操作MsAgent程序选择MerLin精灵时的运行界面

  三、 总结:

  本文全面介绍在Visual Basic .Net中操作MsAgent的具体的实现方法,由于篇幅所限,并没有完全介绍MsAgent中的精灵的全部动作,这些动作 如"Wait"、"Listen"、"Move to"等,但是本文介绍的Speek,Show,Hide,Think动作是精灵使用的最为常用的动作,并且那些没有介绍的动作的具体实现方法和本文介绍 的动作实现方法相类似,读者如使用本文没有介绍的动作时,可参照本文介绍的Speek,Show,Hide,Think动作的地实现方法,相信会对你有很 大启发的

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×