Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Microsoft Agent y C++Builder 6

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Microsoft Agent y C++Builder 6 Responder citando

Alguien sabe como manipular el Microsoft Agent(muñequito de word/excel) con el C++Builder 6 lo ejemplos que hay con el builder 4 o 5 no me funcionan en el 6
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

https://cppbuilder.es/viewtopic.php?t=5272&highlight=msagent
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

gracis tungui voy a revisar y te cuento
pero este enlace
http://cppbuilder.hypermart.net/msagent6.zip

ya no existe, si tuvieses el archivo enviamelo a mi mail please

vprado@unsa.edu.pe

ya te cuento como me fue
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola,

Hace tiempo estuve probando el MS. Agent y aunque no llegue a utilizarlo en mi programa, si estuve probandolo.

Lo primero que necesitas son una serie de ficheros:

http://www.microsoft.com/msagent/downloads/user.asp


MSAGENT.EXE : Microsoft Agent core components (395 KB exe)
AGTX0C0A.EXE : Paquete para el idioma Español. (128 kb)
LHTTSSPE.EXE : Lernoout & Hauspie TTs3000 TTS Engine - Spanish 2,4 Mb
SPCHAPI.EXE : Microsoft SAPI 4.0a runtime binaries 824 kb

Lo siguientes 2 no son del todo necesarios:
SPCHCPL.EXE : Panel de control 927 Kb
ACTCNC.EXE : Microsoft Speech Recognition Engine 6 Mb

Asi mismo necesitaras algun asistente (*.acs), tales como Merlin, Genie, ...

Hay un fichero de ayuda (msagent.chm), que no recuerdo de donde lo saque. Buscalo y si no lo encuentras te lo puedo pasar (en ingles).

A nivel de codigo te pongo un ejemplo:
Necesitamos:
1 form : Form1
2 button: Button1 (para mostrar el agent) y Button2 (para ocultarlo).
1 Combobox: ComboBox1 (para que gesticule).

En el comboBox en la propiedad Item ponemos:
Acknowledge
Alert
Announce
Blink
Confused
Congratulate
Congratulate_2
Decline
DoMagic1
DoMagic2
DontRecognize
Explain
GestureDown
GestureLeft
GestureRight
GestureUp
GetAttention
GetAttentionContinued
GetAttentionReturn
Greet
Hearing_1
Hearing_2
Hearing_3
Hearing_4
Hide
Idle1_1
Idle1_2
Idle1_3
Idle1_4
Idle2_1
Idle2_2
Idle3_1
Idle3_2
LookDown
LookDownBlink
LookDownReturn
LookLeft
LookLeftBlink
LookLeftReturn
LookRight
LookRightBlink
LookRightReturn
LookUp
LookUpBlink
LookUpReturn
MoveDown
MoveLeft
MoveRight
MoveUp
Pleased
Process
Processing
Read
ReadContinued
ReadReturn
Reading
RestPose
Sad
Search
Searching
Show
StartListening
StopListening
Suggest
Surprised
Think
Thinking
Uncertain
Wave
Write
WriteContinued
WriteReturn
Writing

Esto nos sirve para probar los movimientos (funcionan con Merlin, con los otros no los he probado).

En unit.cpp:
Código:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <ComObj.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    oAgent = CreateOleObject("Agent.Control.2");
    oAgent.OlePropertySet("connected","true");

    oCharacters = oAgent.Exec(PropertyGet("Characters"));

// Asistente por defecto
//oCharacters.OleProcedure("Load","");

oCharacters.OleProcedure("Load","merlin","c:\\merlin.acs");

oMerlin = oAgent.OlePropertyGet("Characters","merlin");

// Asistente Por defecto
//oMerlin = oAgent.OlePropertyGet("Characters","");

inicio=true;

// Ubicacion del formulario:
Form1->Top=0;
Form1->Left=Screen->WorkAreaWidth-Form1->Width;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::saludo(void)
{
    inicio=false;

    // Aparece merlin.
    oMerlin.Exec(Procedure("Show"));
//oMerlin.OleProcedure("MoveTo","100","100");

    // Lo Situamos a Merlin a 200 pixel a la izq. del formulario
    oMerlin.OleProcedure("MoveTo",AnsiString(Form1->Left-200).c_str(),"100");

    oMerlin.OleProcedure("Play","Greet");
    // Le hacemos hablar.
    oMerlin.OleProcedure("Speak","Hola. Me llamo merlin.");
    oMerlin.OleProcedure("Speak","Y voy a ser tu asistente.");
//    oMerlin.OleProcedure("Speak","\\Pau=5000000\ Y voy a ser tu asistente.");


}
//---------------------------------------------------------------------------
void __fastcall TForm1::mostrar(void)
{
    if (inicio==true) saludo();
    else oMerlin.Exec(Procedure("Show"));

    oMerlin.OleProcedure("Speak","En que puedo ayudaros.");
    oMerlin.OleProcedure("Play","GestureLeft");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ocultar(void)
{
    oMerlin.Exec(Procedure("Hide"));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    mostrar();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    ocultar();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
//if (oAgent.OleProcedure("Connected")==true)ShowMessage("SI");


//oMerlin.OleProcedure("Play","Congratulate");
oMerlin.OleProcedure("Play",ComboBox1->Text.c_str());

}
//---------------------------------------------------------------------------


Hay muchos comentarios ("//") son pruebas que iba haciendo y al final se quedaron.
Ten ademas en cuenta, que busca c:\merlin.acs

Y en .h
Código:

//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
    TButton *Button1;
    TButton *Button2;
    TComboBox *ComboBox1;
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall Button1Click(TObject *Sender);
    void __fastcall Button2Click(TObject *Sender);
    void __fastcall ComboBox1Change(TObject *Sender);

private:   // User declarations
Variant oAgent,oCharacters,oMerlin;
bool inicio;
void __fastcall saludo(void);
void __fastcall mostrar(void);
void __fastcall ocultar (void);


public:      // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


Importante el: #include <ComObj.hpp>
Tenemos tres eventos: Al pulsar para mostrar el agent (Button1), el ocultar el agent (Button2) y cuando queremos de realize alguna accion (ComboBoxChange).

Espero que te sirva. Esto es lo basico.

Un saludo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Estimados: ¿alguién posee mas info sobre los Agent? En otro post estuve bien que se puede cambiar el genero, el tono, etc.
También sería interesante me informen donde obtener más info al respecto.
Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Un saludo a todos; existe tambien un componente llamado TMSAgent con el cual se pueden manipular los eventos del agente y podemos cargar cualquier agente (acs)
Un ejemplo de como abrirlo sería:

TAgentCharacter *Ag;
Ag= NULL;
MSAgent1->Connect();
//Cargamos el agente
MSAgent1->Characters->Load("Merlin", "Merlin.acs");
Ag = MSAgent1->Characters->Character("Merlin");
//Habilitando los sonidos
Ag->SoundEffectsOn=true;
//Lenguaje en español
Ag->LanguageID=0x0C0A;
Ag->Show();
Ag->MoveToXY(700,10);
_________________
Robar las ideas de una persona es plagio; robarlas de muchas es investigación.
Ley de Felson
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Estimado José Carlos, yo he probado con el componente ActiveX TAgent, y no he podido manipularlo, por lo visto el componenete que necesito es al que haces referencia vos el TMSAgent, ¿podrías decirme donde obtenerlo?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Bajé el TMSAgent 1.5 de
http://www.lebeausoftware.org/download.asp?ID=4
donde dice que es para Builder 3, 4 y 5
cuando intento instalar el componente en Builder 6 me da una pila de errores, algunos de ellos:

Cannot convert 'Variant' to 'tagVARIANT*'
en la línea:
hRes = pEnum->Next(1, vAnimName, &dwretreived);

¿debo hacer algún cambio para que funcione en Builder 6?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchachos, si bien no he podido instalar el componente, estoy viendo la ayuda que posee (hlp) y tiene todo lo necesario para trabajar sin el componente, o sea por ejemplo los tags para el tono, la velocidad, etc.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Mira pampa yo he bajado el MSAgent para builder 5 y solo hay que ejecutar el archivo MSAgentPkg_bcb5 y no existe ningun problema
para llamarlo en nuestra aplicación lo he hecho con el ejemplo que agregé
_________________
Robar las ideas de una persona es plagio; robarlas de muchas es investigación.
Ley de Felson
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Trabajando con el código de KALUX(osea sin usar el componente TMSAgent ) .

1.- ¿Cómo se puede hacer para que el agente haga una pregunta y muestre los botones de aceptar y cancelar o si y no, y ademas como se puede verificar la respuesta elegida?

2.- ¿Cómo se podria agregar un menu contextual al agente y de que forma se podría programar el "evento OnClick" de cada opción del menú?

3.- Al activar el agente aparece un icono en la barra de tareas( al lado de la hora) ¿Existe alguna forma de hacer que ese icono no aparezca?

4.- De que forma se debería programar el Agente para que tenga un comportamiento inteligente o intuitivo tipo word o excel, cada vez que se trabaja con estos paquetes el agente hace sugerencias en base a lo que estamos haciendo.

Entonces para lograr esto, se debe programar esta "inteligencia" del agente en cada formulario donde se necesite o debo programar un hilo(thread) el cual verificara en que parte de mi sistema estoy trabajando para hacer la sugerencia respectiva
Razz
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ya está la versión 2.0 beta del TMSAgent, válida para BCB6. La he estado probando y funciona muy bien. Ya sabemos que sin este componente existe código para manejar los caracteres animados de microsoft, pero si que es cierto que el dichoso componente me facilitó mucho las cosas y me ahorró escritura de código. Ahí va el link donde podeis descargarlo:
http://www.lebeausoftware.org/main.aspx
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.