Ms Agent - Beyond the Basics
Posted: 2002-06-01
By: ArchiveBot
Viewed: 174
Filed Under:
No attachments for this post
This is my fifth tutorial on Ms Agent. In this tutorial I went beyond the basics, so even advanced VB coders will be able to use some of this code. This tutorial is VERY EXTENSIVE, but beginners never fear - as this tutorial is based on my other acclaimed tutorials for beginners, you will be able to understand this tutorial with ease.
Original Author: Mahangu
Code
Ms Agent - Introduction This is my fifth tutorial on Ms Agent. In Understanding this tutorial Through out this tutorial you Index Getting Started Declaring the Character Initializing the Displaying Various Using Ms Agent With Events and Fun Agent Code to Add to Examples of Frequently Asked Getting Started In order to use this tutorial you will need MS Agent is an ActiveX To start making your first Declaring the Character We need to to tell VB that we Dim char As IAgentCtlCharacterEx 'Declare Dim Anim as String 'Dim Char.LanguageID = &H409 Initializing the We need to tell VB, who the character is and Anim = "Peedy" 'We Agent1.Characters.Load Anim, Anim & ".acs" Set char = Agent1.Characters(Anim) char.AutoPopupMenu = False 'So Char.Show 'Shows the Getting to Know As far as I know, there are 4 different Peedy - Genie - Merlin - Robby - What? You don't like any of Displaying Various Through code, we can make the character do Showing the Character This code is used to bring char.show Hiding the Character This code is used to hide the char.hide Making Him Talk The code for this is Char.Speak "Your Making Him Think The code for this is Char.Think "Your Making Him Move To This code too is pretty char.MoveTo 300, 300 Also note that in the code 300,300 we Making Him Stay In His This code brings him back to char.play "Restpose" Making Him Stop Whatever Sometimes you may need to stop the Character char.stop 'Character Making Him Read, Write, The character can various animations that may char.Play "Write" 'The char.Play "Writing" 'The char.Play "Read" 'The char.Play "Reading" 'The char.Play "Process" 'The char.Play "Processing" 'The char.Play "Search" 'The char.Play "Searching" 'The Making Him Show Facial The character can show various facial char.play "Acknowledge" 'This char.play "Alert" 'This char.play "Blink" 'This char.play "Confused" 'This char.play "Decline" 'This char.play "DontRecognize" 'This char.play "Hearing_1" 'This char.play "Hearing_2" 'This char.play "Hearing_3" 'This char.play "Hearing_4" 'This char.play "Pleased" 'This char.play "Sad" 'This char.play "Surprised" 'This char.play "Uncertain" 'This Making Him Look Somewhere The character can look at different angles. char.play "LookDown" 'Looks char.play "LookDownBlink" 'Looks char.play "LookDownReturn" 'Stops char.play "LookUp" 'Looks char.play "LookUpBlink" 'Looks char.play "LookUpReturn" 'Stops char.play "LookRight" 'Looks char.play "LookRighBlink" 'Looks char.play "LookRightReturn" Stops char.play "LookLeft" 'Looks char.play "LookLeftBlink" 'Looks char.play "LookLeftReturn" 'Stops Making Him Do Various The character can do various gestures that char.play "GestureUp" 'Gestures char.play "GestureRight" 'Gestures char.play "GestureLeft" 'Gestures char.play "GestureDown" 'Gestures char.play char.play "GetAttention" 'Gets char.play "Greet" 'Greets char.play char.play "Congratulate_1" char.play "Congratulate_2" char.play "DoMagic1" 'Does char.play "DoMagic2" char.play "StartListening" 'Starts char.play "StoptListening" 'Stops Making him Gesture at a Using the GestureAt property char.GestureAt 300,300 'Character Events and Events Using the Agent1_IdleStart You can place code in the Agent1_IdleStart char.play "Idle1_1" char.play "Idle1_2" char.play "Idle1_3" char.play "Idle1_4" char.play "Idle1_5" char.play "Idle1_6" char.play "Idle2_1" char.play "Idle2_2" char.play "Idle2_3" char.play "Idle3_1" char.play "Idle3_2" char.play "Idle3_3" 'This Using the Agent1_Complete This tells VB what to with the agent once he char.play "Restpose" Using the Agent1_Click You can place some code in the Agent1_Click char.play "Alert" Using the Agent1_Move You can place some code in the Agent1_Move char.play "Surprised" Using the Agent1_DragStart You can place some code in the char.play "Think" Using the Agent1_DragStop You can place some code in the char.play "Blink" Using the Agent1_BalloonHide Using this event you can set what happens Using the Agent1_BalloonShow Using this event you can set what happens Properties Using the SoundEffectsOn Using this property you can toggle the char.SoundEffectsOn = True Turns char.SoundEffectsOn = False 'Turns Using the IdleOn Using this property you can toggle the char.IdleOn = True 'Sets char.IdleOn = False 'Sets Using the AutoPopupMenu Using this propert you can set the agent's char.AutoPopupMenu = True 'Turns char.AutoPopupMenu = False Turns Using the Connected Using this you can set whether the control is char.Connected = True 'Not char.Connected = False 'Connected Using Ms Agent Ms Agent can be used in VB script too. VB Using the Connected Using this you can set whether the control is char.Connected = True 'Not char.Connected = False 'Connected Initializing The Character To initialize the character you will need to <SCRIPT LANGUAGE = “VBSCRIPT”> <!—- Char.Get "state", Char.Show 'Show the --> Sending Requests to the You will need to send requests to the agent 'Add your code here (you 'Add your code here (you Showing Animations If you are using VB script you will need to AgentCtl.Characters After an animation is loaded you should be Examples of Agent Right Click Popup This code is very useful if if Button = Now all you have to do is to add submenus and Agent1_IdleStart When the user does not click 10 'Specify line char.play char.play "read" char.play Goto 10 'Tells VB to You may also want to add the following code Fun Agent Code to Add to Character 'Dive' Code This is some fun code I char.Play "LookDownBlink" 'Looks Character 'Move Around' This is some fun code I char.MoveTo 2000, 300 'Moves Character 'Open Notepad' This code makes the character look like he char.MoveTo 50, 1 'Moves Character 'Grow' Code This code makes the Character grow big! Looks char.Height = "750" 'Sets char.Width = "450" 'Sets Character 'Shrink' Code This code makes the Character shrink! Looks char.Height = "75" 'Sets char.Width = "25" 'Sets Using an Input Box to let This code is very useful because it lets the Message = InputBox("What do you want Peedy to say?") Using a Text Box to let This code is useful to make the character if Text1.text <> " " then End if Frequently Asked How do I know if I have a Just goto Start > Find Hey I'm too lazy to go Yes there is a way.. just Agent1.ShowDefaultCharacterProperties I don't have the file(s). The agent files can be freely downloaded, but Why don't some functions Some versions of character files will Sometimes the character Some functions take a long time to finish or Can I use the Ms Agent in my Yes! as far as I know Microsoft is How can I change the In lots of examples I have seen, in order to Can I use Ms Agent in VB 4.0? I have got reports that you can use Ms Agent Can I use Ms Agent in Java? As far as I know you can. I saw some Java Where can I get more info on Microsoft's When are you going to add a Have patience. I will add this tutorial as What can I expect in your Frankly... a lot! I hope to add a speech THE END A lot of hard work
Beyond the Basics
this tutorial I went beyond the basics, so even advanced VB coders will be able
to use some of this code. This tutorial is VERY EXTENSIVE, but beginners never
fear - as this tutorial is based on my other acclaimed tutorials for beginners,
you will be able to understand this tutorial with ease.
will see text like this - italic text and green
italic text . The normal italic
text means that the text is code and can be copied and pasted straight into
your application. The green italic
text means that the text is a
comment (you will often see this type of text beside code) that was place to
show you how to do something or to give you an example.
- Provides all the data you need to jump start your Agent application
File - Shows how to declare the
Character file for use in VB
Character - Shows how to initialize the Character file
Animations - Shows how to get the Character to display
various animations
VB Script - Shows you how to use Ms Agent with VB Script
Properties of the Agent Control - Describes the Events and
Properties of the Agent Control
your Applications - Gives some cool code which makes the Character
do some fun things
How you can use the Agent Control - Gives some ideas as to
how you can use the Agent Control
Questions - Various related questions and their answers.
Microsoft Visual Basic 5 or 6 (parts of this tutorial may work in VB 4 if you
have Agent 1.5 installed). You will also need the Speech Synthesis libraries
from MSDN along with a Microsoft Agent Character File (*.acs file).
control supplied with Microsoft Visual Basic 5 and 6. It can be used in many
other ways but the most popular use is for creating 'Desktop Pets'. At the
moment there are 4 different characters to chose from - Peedy the Parrot, The
Genie, Merlin the Wizard and Robby the Robot. In this tutorial I have used
Peedy the Parrot as an example.
Microsoft Agent application, open Visual Basic and chose standard exe. Then
right click the toolbar and add the the Microsoft Agent Control. You will see a
new Icon (it looks like a secret agent with sunglasses). Then
double click on the icon on the toolbar to place the control on the form. You
can rename this control to whatever you want but in the code I'm going to
call it Agent1.
file
are using the character file so we need add the following code to the general
declarations.
the String char as the Character file
the Anim string which we will use later on (declaring this will make it easy for
us to change the character with ease, later on)
'This code is optional. The code
worked fine without it but we will add it for usability purposes (it sets the
language ID to English)
Character
where his *.acs file is. So we'll use the following code.
set the Anim String to "Peedy" . You can set this to Genie, or Merlin,
or Robby too.
'This is how we tell VB where to find the character's acs
file. VB by default looks in the C:WindowsMsAgentChars
folder for the character file
'Remember we declared the char string earlier? Now we set
char to equal Agent1.Charachters property. Note that the because we used the
Anim string we can now change the character by changing only one line of code.
the Character wont keep displaying it's annoying popup menu every time you right
click him. You can now add your own popup menu (see examples).
Character File (If set to "Peedy" he comes flying out of the
background)
The Different Characters
characters you can use with Ms Agent. You can download them all from the Ms
Agent Developers Website ( http://msdn.microsoft.com/msagent
). Although you can configure each character to your own liking, they tend to
convey different types of impressions.
The first agent character (I think). He is a temperamental parrot (that's the
way I see him). I use him mostly to add sarcasm to my apps. Has an (sort of)
annoying voice - squeaky in parroty sort of way. You use him to some cool stuff
though.
Cool little guy to add to your apps. Can do some neat stuff too! Use him to add
a touch of class and mystery to your apps. Has an OK voice and has a cool way of
moving around.
Your neighborhood Wizard! Always has the look that he is total control. Also has
a vague look of incomprehension (that's the way I see it!). Useful little dude
but I don't like the way he moves around (wears beanie and flies).
Probably the newest addition to the series. Never got down to downloading him
but I hear that he is an Robot / Monkey??
these characters? Wanna create you're own? It's not easy.. but you can give it a
shot... Just visit the MSDN page for Ms Agent (check FAQs for web
address).
Animations
some cool stuff. Apart from talking he can do various
interesting things. The following code may be pasted into any event in VB (Form_Load,
Command1_Click).
the character on to the screen.
character (take him off the screen).
relatively simple and this works with every character. You
can customize this code for him to say anything. The text appears in a speech
bubble but can also be heard.
Message Here" 'Says "Your
Message Here"
relatively simple and this works with every character. You
can customize this code and make him think of anything. The text appears in a
thought bubble and cannot be heard.
Message Here" ' "Your
message here" appears in a though bubble
Somewhere Else On The Screen
simple and works on every character. You can move him anywhere on the screen be
changing the co ordinates. Please note that screen co ordinates vary from
resolution to resolution. For example on a 640 x 480 resolution monitor 300,500
is off the screen wile on a 800 x 600 monitor the co ordinates are on the
screen.
'This code will move him to the screen co ordinates
300,300
are referring to the screen as x , y (horizontal , vertical).
Rest Pose
the way he was started
'Note - To get out of the rest pose
you will have to use the char.stop function (see below)
He Is Doing
from doing something. This code makes him stop everything and wait.
stops whatever he is doing
Process and Search
prove useful in your applications.
character writes for a while and then stops
character writes until the char.stop function is executed
character reads for a while and then stops
character reads until the char.stop function is executed
character processes for a while and then stops
character processes until the char.stop function is executed
character searches for a while and then stops
character searches until the char.stop function is executed
Expressions
expressions that may be useful in your application.
code makes the character acknowledge something
code makes the character look alert
code makes the character blink
code makes the character look confused
code makes the character decline something
code makes the character look like he doesn't recognize something
code makes the character look like he is listening (left)
code makes the character look like he is listening (right)
code makes the character look like he is listening (both sides)
code makes the character look like he is listening (does not work on peedy)
code makes the character look pleased
code makes the character look sad
code makes the character look surprised
code makes the character look uncertain
Down
and Blinks
looking and returns to restpose
Up
and Blinks
looking and returns to restpose
to the Right
and Blinks
looking and returns to restpose
to the Left
and Blinks
looking and returns to restpose
Gestures
can be quite useful.
Up
Right
Left
Down
"Explain" "Explains
Something
the users attention
the User (by action)
"Announce"
'Congratulates
user
'Congratulates
user
Magic 1 - Can be used with DoMagic2
Listening
Listening
specific location on Screen
you can get the Character to point at a specific screen co ordinate. More useful
than GestureRight and GestureLeft because using this you can point diagonally
too.
points at screen co ordinate 300,300
Properties of the Agent Control
event to set what the Agent does when He is Idle
event to tell VB what the agent does when he is idle. The
Agent can do the following idle stuff. Please note that some functions may not
work for some characters. You can put the following functions in a loop or just
let them run. Also note that some functions cannot be stopped unless the char.stop
command is used. You may also include any other functions in the
Agent1_IdleStart event.
one works only for Peedy I think! - He listens to music!
event to set what the Agent does when He is finished idling
is finished idling. Example -
'This will put the character in his default rest pose
event to Set what happens when the Character is clicked
event to tell VB what to do when the user clicks on the character. You can
place almost any command here. Example -
event to Set what happens when the Character is moved
event to tell VB what to do when the user moves the character. You can
place almost any command here. Example -
event to Set what happens when the user starts to drag the Character
Agent1_DragStart event to tell VB what to do when the user starts to drag the
character. You can place almost any command here. Example -
event to Set what happens when the user stops dragging the Character
Agent1_DragStop event to tell VB what to do when the user stops dragging the
character. You can place almost any command here. Example -
event to Set what happens when the Character's speech balloon is shown
every time the speech balloon is shown (basically every time the character
starts speaking).
event to Set what happens when the Character's speech balloon is hidden
every time the speech balloon is hidden (basically every time the character
stops speaking).
property to switch the Characters sound effects on / off
characters sound effects on an off. Useful if you want the character to stay
silent for a while
sound effects on
sound effects off
property to toggle the Character's idle mode on / off
character's idle mode on an off.
Idle Mode On
Idle Mode Off
property to toggle the default (Agent's) popup menu on and off
popup menu on or off. This menu has only one option (hide) ,so by it is not
really useful. If you want a popup menu for your character see the Agent Right
Click Popup Menu Example (below) on how to create custom popup menus. As you may
have noticed, in the 'Initializing the Character' section I have turned off the
auto popupmenu. Never the less you can use the following code to toggle it on or
off.
Auto PopMenu On
Auto PopMenu Off
property to set whether the Agent is connected to the Microsoft Agent Server
connected to the Microsoft Agent Server (useful for creating client / server
applications).
Connected
with VB Script
script 2.0 is needed to do so. Here is an example. Using VB script is very
useful if you want to include MS Agent on your web page. Please note - I am not
too familiar with VB script so If there are any syntax errors please let me
know.
property to set whether the Agent is connected to the Microsoft Agent Server
connected to the Microsoft Agent Server (useful for creating client / server
applications).
Connected
contact the Agent Server.
Dim Char 'Declare the String Char
Sub window_OnLoad 'Window_Onload
Event
AgentCtl.Characters.Load
"Genie", "http://agent.microsoft.com/characters/v2/genie/genie.acf"
‘Create an object with reference to the character on the Microsoft
server
set Char= AgentCtl.Characters
("Genie") 'Set the the Char string to = The
Agent Cotnrol
"Showing"
‘Get the Showing state animation
Character
End Sub
</SCRIPT>
Server
server in order to do certain commands.
Dim Request
Set Request = Agent1.Characters.Load ("Genie", "http://agent.microsoft.com/characters/v2/genie/genie.acf")
'Sets the request
If (Request.Status = 2) then 'Request is in
Queue
can send text to status bar or something)
Else If (Request.Status = 0) then 'Request
successfully completed
can do something like display the annimation)
End If
get the animations from a server using the Get method. For example the
following code will get all the 'Moving' animations which the character needs.
("Peedy").Get "Animation", "Moving", True
able to play it in the usual way.
How you can use the Agent Control
Menu Example
you only want to have the agent visible on the screen and not the form. Now you
can set the agent to display a popup menu so that you wont have to display the
form. To use this you will need a Form called frmMain and in that form a Menu
Item called mnuMain. mnuMain must have submenus. You can type the following code
into the Agent1_Click Event
vbRightButton then frmMain.popupmenu mnuMain 'This
code will display the popup menu only if the user right click son the age
functions to the mnuMain menu item!
Event Example
on or interact with the Agent for a long time it automatically sets itself to
idle. So you may want to add some functions to make the agent do stuff while the
user is not working with him. You may add the following code to the
Agent1_IdleStart Event -
number so that we can loop back later
"think"
"write"
go to the line number which was specified earlier
to the Agent1_Click Event so that the character will stop doing hid idle part
when the user clicks on him - char.stop
your Applications
Example
sometimes use in applications. It creates a cool effect.
down and blinks
char.Play "LookDownBlink" 'Looks down and blinks
char.Play "LookDownBlink" 'Looks down and blinks
char.Play "LookDownReturn" 'Stops looking down
char.Stop 'Stops what he is doing
char.MoveTo 300, 700 'Moves him to co ordinates 300,700
(off the screen!)
char.Speak "Man It's really dark ..inside your monitor!" 'Speaks
char.MoveTo 300, 50 'Move him to co
ordinates 300,50
char.Speak "Nice to be back!" 'Speaks
Code Example
sometimes use in applications. It looks really funny on Peedy! Note - you may
have to change the screen co ordinates to suite your resolution.
him to co ordinates 2000,300 (off the screen!)
char.MoveTo 300, 300 'Moves to co ordinates 300,300 (lower
middle of screen)
char.Play "confused" 'Looks Confused
char.Speak "Nothing like a little flying to clear the head!" 'Speaks
char.Play "pleased" 'Looks pleased
Code Example
is writing in his notepad while you use your notepad.
character to upper left hand corner of the screen
char.Speak "Let's use notepad!" 'Speaks
char.Play "Writing" 'Character starts writing
Shell "Notepad.exe", vbNormalFocus 'Opens Notepad
with Normal Focus
Example
really cool (you tend to see the pixels though). You can customize the code to
make the character any size you want.
the Characters Height
the Characters Width
Example
really cool (the animations don't look as good though). You can customize the
code to make the character any size you want.
the Characters Height
the Characters Width
the User specify what the Character Says
user decide what the the character says.
'Sets the Message String to equal the input box. Also sets
the input box's heading
char.Speak Message 'Speaks out the text in the Message
String
the User specify what the Character Says
read a whole document. You can load text in to a text box and then tell the
character to read it. The following example requires a text box called Text1.
char.speak text1.text 'Checks to see if the text box is
empty. If it is not empty then it tells the character to speak the text.
Questions
Microsoft Agent Character file(s) on my computer?
> Files or Folders and search for the extension *.acs . If you find any
such files in your C:WindowsMsAgentChars
folder then you are luck. If you have a file called Peedy.acs then this tutorial
will work. Otherwise just specify Anim = "Your Character's Name).
sifting through all that... is there some way I can do it through code?
add this code to a form that has a agent control on it called Agent 1. This code
will show a box which has all the character files installed on your computer.
Look through that and you will know if you have character files or not. Here is
the code
Where can I download them from? Are they freeware?
you are never the less bound by the Microsoft EULA (End User License Agreement).
For more information go to the URL specified below. The agent files (inlcuding the character
files) are available for download on http://msdn.microsoft.com/msagent
(commands) work on some character files?
have more functions, so in order use
all the functions you may need to get a new character file. For example the char.play
"Idle3_3" function does not work on Robby.
doesn't stop what he is doing for a long time... how can I force him to stop?
may even loop for ever so
you may have to force a stop. Just add the char.Stop or the char.StopAll
function to an event to stop the character. When this function is called the
character will automatically stop doing what he was doing and go to his rest
pose.
applications?
distributing this freely across the internet. You can use the control freely
(for more info go to the MSDN site - msdn.microsft.com ), and you can use any of
the code you see in this tutorial freely!
character file?
change the character file you need to change a lot of code. But if you used my
code you only have to change one line of code. All you have to do is to set the
Anim String to equal the character you want. For example to choose Peedy just
type the following code Anim = "Peedy". Note that you can only
change the character if you have the character installed on your machine.
1.5 in Visual Basic 4. I am not sure if it will work in VB 4.0 (16 Bit), but it
should work in VB 4.0 (32 Bit).
code on the MSDN site. You may want to check out the site (see below for URL).
Ms Agent?
official Ms Agent developer page is at - http://msdn.microsoft.com/msagent
Speech Recognition Section?
soon as possible (I am working on it!).
next tutorial?
recognition section as well as how to control Ms Agent via API.
has gone into this tutorial. I have spent many hours writing this article
in an easy to understand manner. If you like this please vote for me.
Also feel free to post any comments or suggestions as to what I
can include in the next version.
Comments on this post
No comments have been added for this post.
You must be logged in to make a comment.