Auteur :
Christian Herbé
Mise en ligne: Janvier 2002
MAJ:
Pour utiliser le perroquet depuis une application MS-Office, démarrez
l'éditeur Visual Basic (Menu Outils | Macro | Macros | Visual
editor).
Insérez un userform
Cliquez avec le bouton droit de la souris sur le fond de la boite à
outils et sélectionnez "Contrôles supplémentaires"
Dans la liste dec contrôles disponibles, cochez "Microsoft Agent
Control"
Un contrôle "Agent" s'est ajouté dans la boite à
outils
Glissez le sur le Userform
Double-cliquez sur la grille du Userform pour accéder à
la fenêtre de code
collez le code suivant et exécutez le (n'oubliez pas d'activez
le son de l'ordinateur!):
Private Sub UserForm_Activate()
UserForm1.Hide
' inutile d'afficher
le userform
Dim texte As
String '
texte est la variable contenant le baratin
texte = "Agent is a software technology
that enables an enriched form of user interaction"
Dim Merlin As
IAgentCtlCharacter
chemin = Environ("windir") & "\msagent\chars\Merlin.acs"
'
récupérer le dossier Windows contenant l'agent
'ici,
la constante &h409 représente l'anglais; &H40C le francais
Agent1.Characters.Load "Merlin", chemin '
ouverture du fichier et définition d'un nom
Agent1.Characters("Merlin").LanguageID
= &H409 'on spécifie la langue voulue.
'ici,
la constante &h409 représente l'anglais; &H40C le francais
Set Merlin = Agent1.Characters("Merlin")
'
On
instancie Merlin !
Merlin.Show '
on l'affiche
Merlin.Speak texte 'on
lui fait réciter le contenu de la variable texte
'
VBA étant asynchrone, il faut suspendre la macro pour laisser un
temps de parole suffisant à Merlin!
Application.Wait TimeSerial(Hour(Now()),
Minute(Now()), Second(Now()) + 10)
End Sub
Glissez le contrôle "agent" depuis la boite à outils jusqu'au
Userform
Double-cliquez sur la grille du Userform pour accéder à
la fenêtre de code
collez le code suivant et exécutez le (n'oubliez pas d'activez
le son de l'ordinateur!):
Private Sub UserForm_Activate()
UserForm1.Hide
' stockage dans la variable
"attitudes" des positions à prendre (ça
m'fait penser à quekchose, pas vous?)
Dim attitudes(1
To
37) As String
attitudes(1) = "Alert"
attitudes(2) = "Announce"
attitudes(3) = "Blink"
attitudes(4) = "Confused"
attitudes(5) = "Congratulate"
attitudes(6) = "Congratulate_2"
attitudes(7) = "Decline"
attitudes(8) = "DoMagic2"
attitudes(9) = "DontRecognize"
attitudes(10) = "Explain"
attitudes(11) = "GestureDown"
attitudes(12) = "GestureLeft"
attitudes(13) = "GetAttention"
attitudes(14) = "GetAttentionReturn"
attitudes(15) = "Greet"
attitudes(16) = "Idle1_1"
attitudes(17) = "Idle1_2"
attitudes(18) = "LookDown"
attitudes(19) = "LookDownBlink"
attitudes(20) = "LookDownReturn"
attitudes(21) = "LookUp"
attitudes(22) = "MoveDown"
attitudes(23) = "Pleased"
attitudes(24) = "Process"
attitudes(25) = "Read"
attitudes(26) = "ReadContinued"
attitudes(27) = "ReadReturn"
attitudes(28) = "RestPose"
attitudes(29) = "Search"
attitudes(30) = "StartListening"
attitudes(31) = "StopListening"
attitudes(32) = "Suggest"
attitudes(33) = "Surprised"
attitudes(34) = "Wave"
attitudes(35) = "Write"
attitudes(36) = "WriteContinued"
attitudes(37) = "WriteReturn"
Dim Merlin As
IAgentCtlCharacter
chemin = Environ("windir") & "\msagent\chars\peedy.acs"
Agent1.Characters.Load "Merlin", chemin
Agent1.Characters("Merlin").LanguageID = &H409
'anglais
Set Merlin = Agent1.Characters("Merlin")
Merlin.Show
Merlin.Height = 300 'pour
redimensionner Merlin
Merlin.Width = 300
For i = 1 To 37 'on lui fait prendre les 37 attitudes standards
Merlin.Speak attitudes(i)
On Error Resume Next
'
certains personnages ne savent pas tout faire, il faut prévoir cette
erreur
Merlin.Play attitudes(i)
'pause de 5 secondes
Application.Wait (TimeSerial(Hour(Now()),
Minute(Now()), Second(Now()) + 5))
Merlin.Play "RestPose"
'forcer
Merlin à revenir à la position neutre
Application.Wait (TimeSerial(Hour(Now()),
Minute(Now()), Second(Now()) + 1))
Merlin.MoveTo Int((500
* Rnd) + 1), Int((500 * Rnd) + 1) ' déplacer
aléatoirement Merlin
Application.Wait (TimeSerial(Hour(Now()),
Minute(Now()), Second(Now()) + 1))
Next i
Merlin.Speak ("Déplacement")
Merlin.MoveTo Int((500 * Rnd) + 1), Int((500
* Rnd) + 1) 'valeurs absolues
Merlin.Speak ("Agrandissement")
Merlin.Height = 300
Merlin.Width = 300
Merlin.Speak "\Chr=""Whisper""\Welcome to the
Microsoft Agent Scripting Helper!" 'chuchotement
Merlin.Think "Welcome to the Microsoft Agent
Scripting Helper!" 'pensées
End Sub
Les MS-agents sont programmés pour l'anglais. Avant d'utiliser
une autre langue, il faut télécharger le programme adapté:
- rendez-vous sur la page
de téléchargement de l'agent
- sélectionnez la langue voulue dans
la rubrique Download the Microsoft Agent core components
- téléchargez le composant Français
- télécharger le composant "langage
de l'agent" dans la rubrique Text-to-speech engines
- installez-les
Pour faire parler l'agent en Français depuis une application
MS-Office:
démarrez l'éditeur Visual Basic (Menu
Outils | Macro | Macros | Visual editor).
Insérez un userform
Cliquez avec le bouton droit de la souris sur le
fond de la boite à outils et sélectionnez "Contrôles
supplémentaires"
Dans la liste dec contrôles disponibles, cochez
"Microsoft Agent Control"
Un contrôle "Agent" s'est ajouté dans
la boite à outils
Glissez le sur le Userform
Double-cliquez sur la grille du Userform pour accéder
à la fenêtre de code
collez le code suivant et exécutez le (n'oubliez
pas d'activez le son de l'ordinateur!):
Private Sub UserForm_Activate()
UserForm1.Hide
Dim Merlin As
IAgentCtlCharacter
chemin = Environ("windir") & "\msagent\chars\peedy.acs"
Agent1.Characters.Load "Merlin", chemin
'Agent1.Characters("Merlin").LanguageID
= &H409 'anglais
Agent1.Characters("Merlin").LanguageID = &H40C
'francais
Set Merlin = Agent1.Characters("Merlin")
Merlin.Show
Merlin.Speak "Monsieur et Madame Bricot
ont un fils. Comment l'appellent-ils ? Judas! Judas Bricot"
'pause de 10 secondes
Application.Wait (TimeSerial(Hour(Now()), Minute(Now()),
Second(Now()) +10))
End Sub