VB.NET -Usando os agentes Microsoft
Usar os agentes Microsoft no VB.NET não tem segredo . Basta você referenciar no seu projeto o componente Microsoft Agent .Vou mostrar um projeto simples que usa o ator Merlin para falar o número dos telefones de uma agenda.
Nota: Para saber mais veja artigo sobre agentes no link : Usando os Agents da Microsoft no Visual Basic
Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
A primeira coisa a fazer é incluir o componente Agent Control 2.0 na ToolBox , aba Components.
Para isto torne visível a toolbox e clique na aba - Components ; você verá a relação de componentes já incluídas.
Para instalar o componente , clique com o botão direito do mouse sobre a aba e no menu suspenso selecione a opção - Customize ToolBox.
Na janela - Customize Toolbox - selecione o componente , conforme figura abaixo , e clique em OK
Agora é só arrastar o componente para o formulário e incluir uma combobox e uma label conforme figura abaixo ( o logotipo e o link são perfumaria):
A idéia é a seguinte:
Quando o projeto for iniciado o ator Merlin deverá aparecer , dar as saudações e indicar a ação que o usuário deverá fazer. Esta ação será selecionar um nome na caixa de combinação.
Ao selecionar o nome o ator irá falar o nome e o telefone que esta associado na caixa de combinação.(Você pode incrementar usando os dados de uma tabela)
O código é bem simples. No evento Load do formulário temos :
Private
Sub Form1_Load(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load agentController = New AgentObjects.Agent()
With agentController .Connected = True .Characters.Load("merlin", "merlin.acs") agentCharacter = .Characters("merlin") End WithWith agentCharacter .Show() .MoveTo(Convert.ToInt16(Cursor.Position.X - 12), Convert.ToInt16(Cursor.Position.Y + 13)) .Play("Wave") .Speak("OLá, Eu sou Merlin. Selecione o nome da pessoa cujo telefone deseja encontrar.") .Play("RestPose") End WithMe.ComboBox1.Items.AddRange(New Object() {"José Carlos Macoratti", "Janice Rachel Siqueira", "Jessica Lang", "Jefferson James Bond"}) End Sub
|
O código associado a rotina pessoa() é o seguinte :
Sub pessoa()
With agentCharacter
If ComboBox1.SelectedIndex = 0 Then .Play("Think") .Speak("O número do telefone de " & ComboBox1.Text & " é (021) 123456789") .Play("Pleased") ElseIf ComboBox1.SelectedIndex = 1 Then .Play("Think") .Speak("O número do telefone de " & ComboBox1.Text & " é (021) 123456789") .Play("Pleased") ElseIf ComboBox1.SelectedIndex = 2 Then .Play("Think") .Speak("O número do telefone de " & ComboBox1.Text & " é (021) 123456789") .Play("Pleased") ElseIf ComboBox1.SelectedIndex = 3 Then .Play("Think") .Speak("O número do telefone de " & ComboBox1.Text & " é (021) 123456789") .Play("Pleased") End If End With End Sub
|
Temos também o código associado ao evento SelectedIndexChange que é acionado quando uma nome na caixa de combinação for selecionado.
Private
Sub
ComboBox1_SelectedIndexChanged(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles
ComboBox1.SelectedIndexChanged pessoa() End Sub |
Executando o projeto e selecionando um nome da combo teremos:
Tudo certo ? Bem , quase ... Como fazer para encerrar a aplicação de forma que agente se despeça gentilmente ?
Se você vascular não vai achar um método ou propriedade que faça a tarefa desejada.
Vamos então ter que criar uma nova propriedade que irá ser incorporada pelo atot no menu de propriedades .
Cada agente possui uma propriedade Commands , que é na verdade uma coleção de objetos Command , o que iremos fazer é definir um novo comando que será incorporado via objeto Commando a coleção Commands. Para o nosso caso o comando será definido como abaixo e colocado no evento Load do formulário do projeto.
magicoMerlin.Commands.add "Sair","Encerrar aplicação","",True,True
Onde :
Definido o comando temos que definir a ação que será tomada quando este comando for executado. No evento Command do agente devemos então colocar o seguinte código:
Private
Sub AxAgent1_Command(ByVal
acao As
Object)
If acao.Name = "Sair"
Then
magicoMerlin.Stop() magicoMerlin.Play("Great") sair = TruemagicoMerlin.Speak(" Obrigado e até logo !") End If End Sub |
Perceba que eu estou usando uma variável chamada sair definida como true (ela deve ser declarada no início do projeto) . Eu não posso encerrar de imediato a aplicação pois a fala do ator não seria vista. Para isto verifico se a variável sair esta True e no evento BallonHide encerro a aplicação. O código é :
Private
Sub
AxAgent1_BalloonHide(ByVal
sender As
Object,
ByVal e
As AxAgentObjects._AgentEvents_BalloonHideEvent)
Handles AxAgent1.BalloonHide If sair Then Me.Close() End If End Sub |
Até mais...
José Carlos Macoratti