http://www.purebasic.fr/english/viewtop ... ght=comate
elle permet d'utiliser sans effort, les activeX
et donc ... les agents microsoft !
faire grace a eux, de la synthese vocale, des animations etc ...
c'est plus sympath de faire parler un agent, plutot qu'une bete boite d'alerte

l'exemple fourni avec comate concernant les agents, n'est pas tres complet aussi , je me suis permis de le peaufiner un peu , en y ajoutant pratiquement toute les animations des agents, mais aussi de pouvoir choisir les agents microsoft (prenez soin de les installer auparavent )
ces agents sont telechargeables ici :
http://www.microsoft.com/MSAgent/downloads/user.aspx
profitez en pour récupérer aussi le moteur de synthèse vocale en français
et aussi en espagnole, puisque mon code montre comment on peut changer de voix facilement

recuperez aussi le moteur de reconnaissance vocale
mon petit doigt me dit que ça pourrai bien servir un jour

voici donc le code a copier a la place du code "Demo_Agent.pb"
du dossier "Basic demo"

code edité le 04/03/2009
Code : Tout sélectionner
;EnableExplicit
; recuperer les agents et la reconaissance vocale ici
;http://www.microsoft.com/MSAgent/
IncludePath "..\"
XIncludeFile "COMate.pbi"
Define.l cHeight, cWidth
If ExamineDesktops()
cWidth = DesktopWidth(0) / 2 - 50
cHeight = DesktopHeight(0) / 4
EndIf
Define.COMateObject oAgent, oGenie
oAgent = COMate_CreateObject("Agent.Control.1")
If oAgent
oAgent\SetProperty("Connected = #True")
;SL.Add(IAgentCtlCharacter(id).Name);
; **************************** le peroquet ***********************
; oAgent\Invoke("Characters\Load('peedy','Peedy.acs')") ;
;oGenie = oAgent\GetObjectProperty("Characters('peedy')")
; *************************************************************
; **************************** le Genie ***********************
; oAgent\Invoke("Characters\Load('Genie','Genie.acs')")
; oGenie = oAgent\GetObjectProperty("Characters('Genie')")
; *************************************************************
; **************************** le Robot ***********************
;oAgent\Invoke("Characters\Load('Robby','Robby.acs')")
;oGenie = oAgent\GetObjectProperty("Characters('Robby')")
; *************************************************************
; **************************** Merlin ***********************
oAgent\Invoke("Characters\Load('Merlin','Merlin.acs')") ;
oGenie = oAgent\GetObjectProperty("Characters('Merlin')")
; *************************************************************
; ************************** personages suplementaire *****************************************
; **************************** Oscar ***********************
; a recuperer ici : http://www.agentland.fr/cgi-bin/relocationFR.cgi?http://www.agentland.fr/Download/6Artificial_Life/Desktop_Agents/Ms_agents/Characters/more2.html
; oAgent\Invoke("Characters\Load('Oscar','Oscar.acs')") ;
; oGenie = oAgent\GetObjectProperty("Characters('Oscar')")
; *******************************; a recuperer ici : http://www.agentland.fr/cgi-bin/relocationFR.cgi?http://www.agentland.fr/Download/6Artificial_Life/Desktop_Agents/Ms_agents/Characters/more2.html
; oAgent\Invoke("Characters\Load('Baron','Baron.acs')") ;
; oGenie = oAgent\GetObjectProperty("Characters('Baron')")
; ******************************************************************************************
; *******************************; a recuperer ici : http://www.agentland.fr/cgi-bin/relocationFR.cgi?http://www.agentland.fr/Download/6Artificial_Life/Desktop_Agents/Ms_agents/Characters/more2.html
; oAgent\Invoke("Characters\Load('Actmanii','Actmanii.acs')") ;
; oGenie = oAgent\GetObjectProperty("Characters('Actmanii')")
; ******************************************************************************************
If oGenie
oGenie\Invoke("show")
Delay(3000)
oGenie\Invoke("MoveTo("+StrU(cWidth)+", "+StrU(cHeight)+", 3000)") ; x,y,vitesse de deplacement
; les animations :
;
oGenie\Invoke("LanguageID=$409") ; $40C force a parler français ($409 pour l'anglais et la reconnaissance vocale)
;************** comment changer la voix !! *****************************
; aller dans la base de registre cherchez la chaine qui caracterise la voix !!
;hklm\Software\Microsoft\
; Debug oGenie\GetStringProperty("TTSModeID")
veronique.s="{0879A4E0-A92C-11d1-B17B-0020AFED142E}" ;voix française
pierre.s="{0879A4E1-A92C-11d1-B17B-0020AFED142E}" ;voix fançaise
carmen.s="{2CE326E0-A935-11d1-B17B-0020AFED142E}" ; voix espagnole a telecharger
julio.s="{2CE326E1-A935-11d1-B17B-0020AFED142E}" ; voix espagnole a telecharger
;;;virginie.s="{CAC6785B-655E-4ae1-A656-BDEFD18DC46C}" ; Sapi 5 ne marche pas avec les agents
;;;Sam.s="{65DBDDEF-0725-11D3-B50C-00C04F797396}";Sapi 5 ne marche pas avec les agents
; oGenie\SetProperty("TTSModeID='"+pierre.s+"'") ; choisi pierre si présent
;Peedy.Commands.Add('calcul','&lancer la calculatrice','(calculatrice)',True,True);
; Peedy.Commands.Add('Bonjour','&Bonjour','(Hello | Bonsoir)',True,True);
;
; Character.Commands.Add("Hello", // Command name
;
; (object)"Say Hello", // Display name
;
; (object)"([say](hello | hi) | good (day | morning | evening))", // SR String
;
; (object)true, // Enabled
;
; (object)true); // Visible
; oGenie\Invoke("Commands\RemoveAll");
; oGenie\SetProperty("Commands\Caption='Test english voice'")
; oGenie\SetProperty("Commands\Voice='Merlin recognize english'")
; oGenie\Invoke("Commands\Add('yes','&yes','(yes |oui)',#true,#true");
; oGenie\SetProperty("Commands\Visible=#true");
; oGenie\Invoke("listen(#true)")
; Debug oGenie\GetStringProperty("listen(0)")
; Repeat
; CommandeVocale:=IAgentCtlUserInput(UserInput).name;
; Debug oGenie\GetStringProperty("IAgentCtlUserInput\name")
; If oGenie\Invoke("IAgentCtlUserInput\name")<>""
; Debug oGenie\Invoke("IAgentCtlUserInput\name")
;EndIf
; If rep.s="calcul"
; oGenie\Invoke("Speak('Bonjour'");
;EndIf
;ForEver
;CallDebugger
ch$="'\Chr='Whisper'\'" ;Monotone;Whisper,Normal
ch$="'bonjour, je vais vous parler de Purebasic'"
oGenie\Invoke("Speak("+ch$+")")
ch$="'tiens a quoi je pense la ?'"
oGenie\Invoke("Think("+ch$+")") ; fait penser l'agent !!
oGenie\Invoke("play('Greet')")
Delay(1000)
oGenie\Invoke("play('confused')")
Delay(1000)
oGenie\Invoke("play('alert')")
Delay(1000)
oGenie\Invoke("play('Announce')")
Delay(1000)
oGenie\Invoke("play('Congratulate')")
Delay(1000)
oGenie\Invoke("play('DoMagic2')")
Delay(1000)
oGenie\Invoke("play('Decline')")
Delay(1000)
oGenie\Invoke("play('DontRecognize')")
Delay(1000)
oGenie\Invoke("play('Explain')")
Delay(1000)
oGenie\Invoke("play('GestureDown')")
Delay(1000)
oGenie\Invoke("play('GestureLeft')")
Delay(1000)
oGenie\Invoke("play('GestureRight')")
Delay(1000)
oGenie\Invoke("play('GestureUp')")
Delay(1000)
oGenie\Invoke("play('GetAttention')")
Delay(1000)
oGenie\Invoke("play('GetAttentionContinued')")
Delay(1000)
oGenie\Invoke("play('GetAttentionReturn')")
Delay(1000)
oGenie\Invoke("play('LookDown')")
Delay(1000)
oGenie\Invoke("play('LookDownreturn')")
Delay(1000)
oGenie\Invoke("play('LookDownBlink')")
Delay(1000)
oGenie\Invoke("play('LookDownreturn')")
Delay(1000)
oGenie\Invoke("play('LookLeft')")
Delay(1000)
oGenie\Invoke("play('LookLeftreturn')")
Delay(1000)
oGenie\Invoke("play('LookLeftBlink')")
Delay(1000)
oGenie\Invoke("play('LookLeftreturn')")
Delay(1000)
oGenie\Invoke("play('LookRight')")
Delay(1000)
oGenie\Invoke("play('LookRightreturn')")
Delay(1000)
oGenie\Invoke("play('LookRightBlink')")
Delay(1000)
oGenie\Invoke("play('LookRightreturn')")
Delay(1000)
oGenie\Invoke("play('LookUp')")
Delay(1000)
oGenie\Invoke("play('LookUpReturn')")
Delay(1000)
oGenie\Invoke("play('LookUpBlink')")
Delay(1000)
oGenie\Invoke("play('LookUpReturn')")
Delay(1000)
oGenie\Invoke("play('LookUpReturn')")
Delay(1000)
oGenie\Invoke("play('MoveDown')")
Delay(1000)
oGenie\Invoke("play('MoveLeft')")
Delay(1000)
oGenie\Invoke("play('MoveRight')")
Delay(1000)
oGenie\Invoke("play('MoveUp')")
Delay(1000)
oGenie\Invoke("play('Pleased')")
Delay(1000)
oGenie\Invoke("play('Processing')") ; bloc
Delay(5000)
oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
Delay(2000)
;oGenie\Invoke("play('Stop')")
oGenie\Invoke("play('Read')")
Delay(1000)
oGenie\Invoke("play('ReadContinued')")
Delay(1000)
oGenie\Invoke("play('Reading')"); bloc
Delay(5000)
oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
Delay(1000)
oGenie\Invoke("play('Sad')")
Delay(1000)
oGenie\Invoke("play('Searching')") ; bloc
Delay(5000)
oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
Delay(1000)
oGenie\Invoke("play('StartListening')")
Delay(1000)
oGenie\Invoke("play('StopListening')")
Delay(1000)
oGenie\Invoke("play('Suggest')") ; bloc
Delay(5000)
oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
Delay(1000)
;
oGenie\Invoke("play('Surprised')")
Delay(1000)
;
oGenie\Invoke("play('Think')")
Delay(1000)
oGenie\Invoke("play('Uncertain')")
Delay(1000)
oGenie\Invoke("play('Wave')")
Delay(1000)
;
oGenie\Invoke("play('Write')")
Delay(1000)
oGenie\Invoke("play('WriteContinued')") ;bloc
Delay(5000)
oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
Delay(1000)
oGenie\Invoke("play('Writing')") ; bloc
Delay(5000)
oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
Delay(1000)
oGenie\Invoke("play('Writereturn')")
oGenie\Invoke("play('StopAll')")
ch$="'bonjour, je vais vous parler de Purebasic'"
oGenie\Invoke("Speak("+ch$+")")
oGenie\Invoke("play('Reading')") ; bloc
Delay(5000)
oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
Delay(2000)
ch$="'\Pit=100\ PureBasic est vraiment un super langage'" ; en principe le pitch en hertz entre 50 et 400
oGenie\Invoke("Speak("+ch$+")")
Delay(5000)
ch$=" '\Spd=200\ je sais parler plus vite aussi'" ; en mot par minutes (de 50 a 250)
oGenie\Invoke("Speak("+ch$+")")
Delay(6000)
ch$=" '\Spd=80\ je sais parler plus lentement aussi'" ; en mot par minutes
oGenie\Invoke("Speak("+ch$+")")
Delay(6000)
ch$="'\Vol=1000\ et moins fort '" ;de 0 a 65535 ; le volume en principe
oGenie\Invoke("Speak("+ch$+")")
ch$="'\Vol=65535\ \Pit=50\ et beaucoup plus fort !! '" ;de 0 a 65535 ; le volume en principe
oGenie\Invoke("Speak("+ch$+")")
ch$="'\Rst\'" ; reset les tag
oGenie\Invoke("Speak("+ch$+")")
Delay(6000)
oGenie\Invoke("Speak('Au revoir ! .')")
oGenie\Invoke("play('Hide')")
Delay(3000)
oGenie\Release()
EndIf
oAgent\Release()
EndIf