| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
cecito Capt

Registrado: 25 Nov 2003Mensajes: 164Ubicación: Arequipa - Perú
|
Publicado: Lun 19 Jul, 2004 7:43 pm Asunto: Microsoft Agent y C++Builder 6 |
|
|
| 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 |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
|
| Volver arriba |
|
 |
cecito Capt

Registrado: 25 Nov 2003Mensajes: 164Ubicación: Arequipa - Perú
|
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Lun 19 Jul, 2004 10:48 pm Asunto: |
|
|
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 |
|
 |
pampa Lt JG

Registrado: 16 Jun 2004Mensajes: 58Ubicación: Mar del Plata - Argentina
|
Publicado: Mie 29 Dic, 2004 4:26 pm Asunto: |
|
|
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 |
|
 |
josecarlos Cdt

Registrado: 30 Ago 2004Mensajes: 18Ubicación: Oaxaca, México
|
Publicado: Mie 29 Dic, 2004 6:55 pm Asunto: |
|
|
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 |
|
 |
pampa Lt JG

Registrado: 16 Jun 2004Mensajes: 58Ubicación: Mar del Plata - Argentina
|
Publicado: Mie 29 Dic, 2004 9:03 pm Asunto: |
|
|
| 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 |
|
 |
pampa Lt JG

Registrado: 16 Jun 2004Mensajes: 58Ubicación: Mar del Plata - Argentina
|
Publicado: Mie 29 Dic, 2004 9:23 pm Asunto: |
|
|
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 |
|
 |
pampa Lt JG

Registrado: 16 Jun 2004Mensajes: 58Ubicación: Mar del Plata - Argentina
|
Publicado: Mie 29 Dic, 2004 9:35 pm Asunto: |
|
|
| 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 |
|
 |
josecarlos Cdt

Registrado: 30 Ago 2004Mensajes: 18Ubicación: Oaxaca, México
|
Publicado: Sab 08 Ene, 2005 12:28 am Asunto: |
|
|
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 |
|
 |
cecito Capt

Registrado: 25 Nov 2003Mensajes: 164Ubicación: Arequipa - Perú
|
Publicado: Sab 08 Ene, 2005 7:24 am Asunto: |
|
|
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
 |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mar 04 Jul, 2006 7:04 am Asunto: |
|
|
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 |
|
 |
|