Programmation d'un Compagnon Office

Leçons de programmation Visual Basic

Microsoft fournit un contrôle ActiveX assez bien fait qui permet de créer, sans trop de programmation, un compagnon comme le trombonne dans office 97 et 2000. Celui-ci se place sur l'écran et effectue ce que vous lui commandez. Cette leçon montre le fonctionnement de l'ActiveX.

Pour se procurer le compagnon, recherchez sur le cd de visual studio le fichier "MSAgent.exe" qui l'installera sur votre système ou allez sur le site de microsoft et recherchez-le dans la section de programmation. La page : http://msdn.microsoft.com/workshop...

Voici les principaux personnages disponibles pour le compagnon :

Merlin : Compagnon magicien, demandez-le lui et il vous fera une démonstration de ses pouvoirs magiques !
>> Il existe deux types de merlin : merlinsfx.acs est sonorisé et pas l'autre...
Génie : Humble mais puissant serviteur qui vit dans une lampe, il exaucera (presque) tous vos voeux.
Robby : Assistant digital personnel.
Peddy : C'est le pauvre oiseau vert d'au-dessus... à télécharger

Génie Merlin Robby

Pour commencer, ajoutez le contrôle ocx Microsoft Agent 2.0 à un nouveau projet et placez sur la feuille principale deux boutons de commande et une zone de texte multilignes.

Les contrôles de Form1 :
• Command1
• Command2
• Text1
• Agent1

Le texte affiché dans Text1 sera lu par l'agent grâce à la commande

Gonze.Speak Text1.Text

Mais l'agent est aussi capable de faire des mimiques telles que l'interrogation, le plaisir, la surprise... Ces mimiques sont actionnées par la commande

Gonze.Play attitude.

Voici un tableau qui résume ces différentes attitudes :

Attitude Chaîne de caractère
Annonce announce
Explication explain
Content pleased
Révérence longue   greet
Révérence rapide greetreturn
En haut gestureup
En Bas gesturedown
A Gauche gestureleft
A Droite gestureright
Surpris surprised
Pensif think
... ...

Bon, voici donc ce que peut faire basiquement cet ocx. Mais avant tout, il s'agit d'initialiser l'agent, ensuite, il pourra faire ce que l'on voudra... Ce code placé dans la procédure de chargement de la feuille prépare l'agent merlinsfx :

Dim Gonze As IAgentCtlCharacter
Const DATAPATH = "merlinsfx.acs"

Private Sub Form_Load()
'Si la valeur est True, l'agent est doté de la reconnaissance vocale.
' Dans mon cas, c'est faux et je ne peux donc vous aider sur ce point...
Me.Caption = Agent1.SpeechInput.Installed
'Charge le fichier agent merlinsfx
Agent1.Characters.Load "Gonze", DATAPATH
'Définit Gonze comme le nouvel agent
Set
Gonze = Agent1.Characters("Gonze")
'Met en marche les effets sonores de l'agent
Gonze.SoundEffectsOn = True
'Affiche l'agent
Gonze.Show
'Joue une attitude
Gonze.Play "Greet"
End Sub

Niveau : 1 Exercice : Propgrammez le code de Command2 sachant qu'un clic sur le bouton doit faire parler l'agent et lui faire dire le texte de la zone de texte, après qu'il ait joué de la trompette (fait une annonce...)

Indice1 : "announce" sera utile...
Indice 2 : en anglais, parler se dit speak...

Solution : Ben c'est plutôt simple...

Private Sub Command2_Click()

Gonze.Play "Announce"

Gonze.Commands.GlobalVoiceCommandsEnabled = True
Me.Caption = Gonze.Commands.DefaultCommand
Gonze.Play "pleased"
Gonze.GestureAt 200, 200
Gonze.Speak Text1.Text
End Sub


COMPLEMENTS

1 • Lorsque l'on affiche un compagnon office par défaut, celui-ci apparaît dans le coin gauche de l'écran. Pour spécifier la position du compagnon, on pourra faire la série d'instructions suivantes (à comparer avec le premier code) :

Dim Gonze As IAgentCtlCharacter
Const DATAPATH = "merlinsfx.acs"

Private Sub Form_Load()
'Si la valeur est True, l'agent est doté de la reconnaissance vocale.
' Dans mon cas, c'est faux et je ne peux donc vous aider sur ce point...
Me.Caption = Agent1.SpeechInput.Installed
'Charge le fichier agent merlinsfx
Agent1.Characters.Load "Gonze", DATAPATH
'Spécifications des coordonnées d'apparition de l'agent
Agent1.Characters.Character("Gonze").Left = 100
Agent1.Characters.Character("Gonze").Top = 200

'Définit Gonze comme le nouvel agent
Set
Gonze = Agent1.Characters("Gonze")
'Met en marche les effets sonores de l'agent
Gonze.SoundEffectsOn = True
'Affiche l'agent
Gonze.Show
'Joue une attitude
Gonze.Play "Greet"
End Sub

2 • Pour faire disparaître le compagnon office autrement que par clic droit, on peut invoquer l'instruction suivante :

Gonze.Hide False
ou
Gonze.Hide True 'qui saute l'animation d'au revoir

3 • La liste de toutes les animations disponibles pour les trois compagnons présentés ici est disponible ici (en anglais) :