科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Visual Basic .NET中操作MsAgent

Visual Basic .NET中操作MsAgent

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

     .Net FrameWork SDK虽然推出了1.0正式版(版本号3705),但要用它来接管对计算机的所有操作,还不能完全实现,在用Visual Basic .Net编写应用程序的时候,很多功能的实现。

作者:builder.com.cn 2007年9月29日

关键字: 编程

  • 评论
  • 分享微博
  • 分享邮件
  
  .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所示:
  
   
  
  弹出【自定义工具箱】对话框,选择其中的【COM组件】页面中,在【名称】栏中选择【Microsoft Agent Control 2.0】,具体如图02所示:
  
   
  
  单击【确定】按钮,则在【工具箱】的【Windows组件】组件栏最后中,新增了一个MsAgent组件,具体如图03所示:
  
   
  
  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所示:
  
   
  
  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 ( TextB

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章