Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2004
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
Question ActiveX Microsoft Agent en Delphi

Quisiera saber como puedo utilizar los "ActiveX Microsoft Agent" en mis programas de delphi. yo utilizo la versión 5.
En la sección de columnas aparece un escrito al respecto, pero no he podido encontrar los archivos necesarios.

muchas gracias

seara2005
__________________
Saludos

Seara2005
Responder Con Cita
  #2  
Antiguo 02-08-2004
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
Unhappy ActiveX Microsoft

No he recibido ninguna respuesta, el enlace que aparece en el artículo está desactualizado y no sé cual fichero buscar en la página completa.

Si alguien lo ha logrado

Por favor que me ayude

Muchas gracias
__________________
Saludos

Seara2005
Responder Con Cita
  #3  
Antiguo 03-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
www.msagentring.org

En la seccion de descargas tienes que bajar todo lo que hay e instalarlo paso a paso, y por el orden que dice. (da mas de un dolor de cabeza si no se instala en ese orden).

Despues en Delphi, Importas el ActiveX Microsoft Agent 2.0 y listo.

la documentación sobre los bichitos esos es algo dura, por no decir que no hay nada jejeje, solo un par de ejemplos con código fuente.

Saludos
Responder Con Cita
  #4  
Antiguo 04-08-2004
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
Thumbs up Activex Microsoft


Muchas Gracias Lepe,
cuando lo pruebe daré mi opinión para
que le sirva a los demás que pudieran estar interesados,

gracias de nuevo
__________________
Saludos

Seara2005
Responder Con Cita
  #5  
Antiguo 11-09-2004
Avatar de German
German German is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 133
Poder: 22
German Va por buen camino
Lightbulb

Esperemos que seara2005 escriba pronto para decir como le fué...

En fín, en referencia a la columna publicada sobre Microsoft Agent, añadir que para hacer funcionar y hablar en español a cualquier personaje en una de nuestras aplicaciones, el usuario final de esa aplicación deberá tener una serie de librerias instaladas en Windows (todos los enlaces son del servidor de descargas de Microsoft):

- Microsoft Agent v2.0 (en XP no es necesario, pues viene incluido):
http://activex.microsoft.com/activex...t2/MSagent.exe

- Componentes para que Microsoft Agent use el idioma español :
http://activex.microsoft.com/activex...2/AgtX0C0A.exe

- Motor Text To Spech (Texto a voz) en español:
http://activex.microsoft.com/activex...2/lhttsspe.exe

- Controles de voz binarios SAPI 4.0a:
http://activex.microsoft.com/activex...pi/spchapi.exe

Y, evidentemente, deberá tener al menos un personaje instalado (XP incluye el "Mago").

- Galeria de personajes:
http://www.msagentring.org/chars.htm

- Página oficial de Ms.Agent:
http://www.microsoft.com/msagent/default.asp

Salu2.

Última edición por German fecha: 11-09-2004 a las 08:21:37.
Responder Con Cita
  #6  
Antiguo 14-09-2004
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
Cool

Perdonen a todos los interesados en este tema, es que me he tomado unas vacaciones en el mes de agosto y no he tocado mi PC por varios días.
A partir de hoy les prometo que retomaré el asunto y los mantengo al tanto.

Nota: Les aconsejo que no esperen mucho de mí, ya que soy un aprediz del delphi y de este asunto en particular ni hablar.

chao
__________________
Saludos

Seara2005
Responder Con Cita
  #7  
Antiguo 14-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Hecho todo lo anterior, solo queda saber como cargar el personaje, ponerlo en pantalla y hacerlo hablar.
Código Delphi [-]

uses  contnrs,  OleCtrls; // creo que estos 2 son los más raritos.

  public
    { Public declarations }
    Merlin:IAgentCtlCharacter;
    Ole:OleVariant; // se usa para las respuestas que te de el merlin.
    Personaje:string;
   procedure MostrarAgente;
    procedure HablarTexto(const str: string);
    procedure OcultarAgente;
    procedure Callar;

procedure TForm1.FormShow(Sender: TObject);
var i:integer;
begin
  if directoryExists(getwindir +'\msagent\') then
    if directoryexists(getwindir+'\msagent\chars') then
    begin
// buscamos todos los personajes que tenga instalados y los ponemos en un
// combobox 
// las rutinas de las NKLibs distribuidas en las RXLibs ayudan un poco 
      findfilesindirS(getwindir+'\msagent\chars','*.acs',
faanyfile,false,TstringList(cbopersonaje.items));
    end;
  for i:=0 to cbopersonaje.Items.Count-1 do
    cbopersonaje.items[i] := getbarefilename(cbopersonaje.items[i]);
  // solo cogemos el nombre, no la ruta completa.

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
// muestra las opciones del personajes para que el usuario las modifique.
   agent1.ShowDefaultCharacterProperties;

end;

// cargar en memoria
procedure TForm1.cargarClick(Sender: TObject);
begin
//  Personaje es un string y tiene el nombre del personaje, en este caso 'Merlin'
  agent1.Characters.Load(Personaje,Personaje+'.acs');
  Merlin :=agent1.Characters[Personaje];
  if Merlin.Height<> TrackBar1.Position then
  begin
    RelacionAspecto := merlin.Height div merlin.Width;
    Merlin.Height:= TrackBar1.Position;
    Merlin.Width:= Integer(TrackBar1.Position *RelacionAspecto)

  end;

end;

procedure TForm1.MostrarAgente;
begin
  with Merlin  do
  begin
    if not visible then
      Show(Ole);
  end;
end;

procedure TForm1.Callar;
begin
  Merlin.Stop(Ole);
end;

procedure TForm1.HablarTexto(const str:string);
begin
  MostrarAgente;
  Merlin.Speak(str,'');
end;

Y ya solo queda hacer con él lo que nos apetezca.
El tema de averiguar los motores de voz que puede usar y el tipo de voz es algo más complejo.

Para un proyecto basico, sobra con esto. Si tienes alguna duda, pinchame un poco

Se me olvidaba, hay otras formas de hacerlo hablar, sin usar un objeto "Merlin:IAgentCtlCharacter" pero he observado que despues no lo puedes hacer callar (te da un error en ejecución), por eso trabajo con el objeto IAgetCtlCharacterSuMadreTambien

Saludos.

Última edición por Lepe fecha: 14-09-2004 a las 17:42:13.
Responder Con Cita
  #8  
Antiguo 22-09-2004
seara2005 seara2005 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Colombia
Posts: 63
Poder: 21
seara2005 Va por buen camino
Thumbs up

Muchas Gracias a todos los que me han ayudado, especialmente a LEPE y a GERMAN.

He confeccionado un programita sencillo y me ha funcionado correctamente.
El ayudante aparece, desaparece, habla, etc. esto me sirve como base para utilizarlo en cosas mas complejas.

A continuación les describo:
- Realicé las Instalaciones en el orden que Germán explica, busqué los archivos necesarios utilizándo sus enlaces.
- Despues en Delphi, Importé el ActiveX Microsoft Agent 2.0 mediante el menú component\Import Active X Control...\y lo seleccioné de la lista y click en install.
- El la Paleta de componentes en la pestaña de Active X del delphi aparece un Componente llamado Agent.
- Confeccioné el programa guiándome por el que aparece elaborado por Lepe anteriormente y algunas cosas tomadas del artículo de la sección de columnas de este club delphi elaborado por Jorge.

A continuación les describo el Programa:

En el Formulario Inserté un agent y 5 botones (ShowMessage/Opciones/Mostrar/Hablar/Ocultar/Cerrar)
A continuación el código completo:

-------------------------------------------------------
unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, OleCtrls, AgentObjects_TLB, uAgentMessage, StdCtrls,
contnrs;

type
TfrmMain = class(TForm)
btnShowMessage: TSpeedButton;
Agent: TAgent;
ButtonOpciones: TButton;
ButtonMostrar: TButton;
ButtonHablar: TButton;
ButtonOcultar: TButton;
ButtonCerrar: TButton;
procedure FormShow(Sender: TObject);
procedure btnShowMessageClick(Sender: TObject);
procedure ButtonOpcionesClick(Sender: TObject);
procedure ButtonMostrarClick(Sender: TObject);
procedure ButtonHablarClick(Sender: TObject);
procedure ButtonOcultarClick(Sender: TObject);
procedure ButtonCerrarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }

end;

var
frmMain: TfrmMain;
Agente:String;

implementation

{$R *.DFM}

procedure TfrmMain.FormShow(Sender: TObject);
begin
Agente:='Genie';
Agent.Characters.Load(Agente, Agente+'.acs');
end;

procedure TfrmMain.btnShowMessageClick(Sender: TObject);
begin
ShowAgentMessage(Agent, 'Hola, Esta es una prueba del Microsoft Office Agent, en Delphi', btnShowMessage, True);
end;

procedure TfrmMain.ButtonOpcionesClick(Sender: TObject);
begin
Agent.ShowDefaultCharacterProperties(10,10);
end;

procedure TfrmMain.ButtonMostrarClick(Sender: TObject);
begin
with agent do If not visible then Characters.Item[Agente].Show(0);
end;

procedure TfrmMain.ButtonHablarClick(Sender: TObject);
begin
Agent.Characters.ITem[Agente].Speak ('Hola','');
end;

procedure TfrmMain.ButtonOcultarClick(Sender: TObject);
begin
with agent do if not visible then Characters.Item[Agente].Hide(0);
end;

procedure TfrmMain.ButtonCerrarClick(Sender: TObject);
begin
Close;
end;

end.
-----------------------------------------------------------

He estado probándo algunas cosas, pero como dice Lepe, la documentación sobre esto es escasa, por ejemplo sería interesante darle vida y mostrar las distintas secuencias de animaciones, pero ni modo no he podido. solo mostrarlo, moverlo, ocultarlo, hablar, en fin cosas básicas.
Estoy seguro que algo aparecerá mas adelante.


Gracias de nuevo, especialmente a Lepe y a Germán
__________________
Saludos

Seara2005
Responder Con Cita
  #9  
Antiguo 22-09-2004
Avatar de German
German German is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 133
Poder: 22
German Va por buen camino
Lightbulb

Para saber las animaciones, fíjate que en la página que te puse para descargar personajes (http://www.msagentring.org/chars.htm), que hay un enlace "Character Details..." que muestra todas las posibles de cada personaje.

También he encontrado este código para obtener la lista de animaciones de un caracter, aunque no lo he probado:

Código:
procedure tForm1.GetAnimationList(IAChar:IAgentCtlCharacterEx;Ts:TStrings);
{ IAChar : the character like  Agent.Characters.Character('Genie')
  Ts : the TStrings to be filled with the list of his available animations}
const
  IID_IEnumVariant: TGUID = (D1:$00020404;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
var
  pEnum:IEnumVARIANT ;
  vAnimName:VARIANT ;
  dwRetrieved:DWORD ;
  hRes: HResult;
begin
  hRes:=IAChar.AnimationNames.enum.QueryInterface(IID_IEnumVARIANT, pEnum);
    while (TRUE) do begin
      hRes:=pEnum.Next(1, vAnimName, @dwRetrieved);
      if S_OK<>hRes then break;
      // vAnimName is the animation Name
      ts.add(vAnimName);
      //VariantClear(&vAnimName);
    end;
    //pEnum.free();
  end;
end;
Salu2.
Responder Con Cita
  #10  
Antiguo 14-02-2009
comodoro comodoro is offline
Registrado
 
Registrado: feb 2009
Posts: 3
Poder: 0
comodoro Va por buen camino
Que el Agente hable en español y no con acento Ingles

saludos compñeros;

Soy nuevo en el foro, pero viejo programando en Delphi. recien he estado trabajando sobre este Tema de MSAgent para usarlo en nuestras aplicaciones. En fin busque y busque, y las busquedas resultaban infructuosas hasta que llegue a la documentación de Microsoft sobre MSAgent y alli encontre como, bueno tuve que leer y traducir y probar, hacer que nuestros personajes hablen en español y no con acento ingles.

Aqui les dejo el codigo, yo lo coloque en el FormCreate, deseo que les sirva de provecho como fue para mi.

Se parte del supuesto que tienen instalado todo lo necesario para trabajar con MSAgent
...
Agent1.Connected := True;
Agent1.Characters.Load('Lorito', 'Peedy.acs');

//ESTO COLOCA EL IDIOMA EN ESPAÑOL

//Para establecer el Idioma;
Agent1.Characters.Character('Lorito').Set_LanguageID($0C0A);

//Para establecer el ID del TTS en español, es la Voz de Julio
Agent1.Characters.Character('Lorito').TTSModeID := '{2CE326E1-A935-11d1-B17B-0020AFED142E}';
// Associar o agente à variável Agente
Agente := Agent1.Characters['Lorito'];
....


"El Hombre Inteligente no es aquel que lo sabe todo sino aquel que sabe aplicar lo poco que sabe"
Silver Stone

Última edición por comodoro fecha: 14-02-2009 a las 06:27:57.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:01:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi