MSAgent Class






4.38/5 (8 votes)
Sep 15, 2003
2 min read

81547

2698
A Class to use MS-Agents instead of MessageBoxes
Introduction
Apologies in advance about my English and the brief descriptions, as my native language is German. I demonstrate a class to use MS-Agents instead of MessageBox
es to communicate with users. The following features are included:
- simple command interface.
- serialize all commands.
- support scripting.
- can interact with user through mouse events.
Using the code
class cAgent
cAgent (char *Character = NULL);
Create a Agent object. Character can be a *.acs file. NULL
uses the default character from system.
bool Command (char *Command);
Push a Command to the Queue. Commands are case sensitive, Parameters and Values are not.
Command | Parameter | Values [defaults] |
|
Text | |
Think |
Text | |
Play |
AnimationName | |
MoveTo |
xPos yPos Speed | {number}{number}{[0]|> 0} |
MoveTo |
Position Speed | {center|lefttop|leftbottom|righttop|rightbottom}{[0]|>0} |
Move |
DeltaX DeltaY Speed | {number}{number}{[0]|>0} |
Show |
Speed | {[slow]|fast} |
Hide |
Speed | {[slow]|fast} |
Size |
xSize ySize | {number}{number} |
Resize |
||
Name |
Name for Character | |
Language |
Language | {german|american|english} |
Menu |
ShowAutoPopup | {[off]|on} |
Sounds |
AnimationSounds | {[on]|off} |
Volume |
channel switch | {master|wave}{[on]|off|reset|volume in percent} |
Phrase |
FileName | {[Phrases.txt]} |
Execute |
Executable [Parameter] | |
Shell |
["Verb"] File | |
Stop |
||
Quit |
bool Script (char *IniFile,char *Key);
Execute a script. Scripts are Sections from Windows .ini files :
An additional command available from scripts is :
Command | Parameter | Values [defaults] |
|
a key in this script file |
Sample Script File :
[FIRST]
MoveTo Center 0
Show Slow
Play Greet
[HALLO]
Goto First
Speak Hallo !
Hide Slow
[GOODBY]
Goto First
Speak Goodby !
Hide Slow
Quit
void GetIdle (void);
Wait for Queue is empty.
void GetQuit (void);
Wait for Quit command and terminate. You can't use the cAgent
Object after GetQuit()
.
virtual void Click (teMouseEventKeys keys,tMousePosition p); virtual void DblClick (teMouseEventKeys keys,tMousePosition p);
Overwrite this functions to get response from Agent. A window created from here will be destroyed with the cAgent
object.Click()
will be called before DblClick()
, to avoid this use the next four functions.
virtual void LeftClick (teVirtualKeys key,bool SysTray); virtual void RightClick (teVirtualKeys key,bool SysTray); virtual void LeftDblClick (teVirtualKeys key,bool SysTray); virtual void RightDblClick (teVirtualKeys key,bool SysTray);
Overwrite this functions to get response from Agent. This functions would be executed from a thread that terminate on return XXClick()
. A window created from here will be destroyed after return !
The simplest way to use :
#include "cAgent.h" extern "C" int PASCAL WinMain (HINSTANCE i,HINSTANCE prev, LPSTR cmd,int show) { cAgent *Agent = new cAgent(); Agent->Command ("MoveTo Center 0"); Agent->Command ("Show Slow"); Agent->Command ("Play Greet"); Agent->Command ("Speak Hallo world !"); Agent->Command ("Play RestPose"); Agent->Command ("Hide slow"); Agent->GetIdle (); delete Agent; return ERROR_SUCCESS; }
Other classes used from cAgent
cAgentCommands
Covers the commands from cAgent
.
cAgentSink
Controls the queue that will serialize the commands. Raise mouse and bookmark events.
Queue
A simple circular buffer to hold the commands.
cMMControl , cPhrase
cMMControl
controls the system audio mixer. cPhrase
picks a random phrase from a simple formatted text file.
Points of Interest
MS-Agent Hompage | http://www.microsoft.com/msagent/ |
Developer downloads |
http://www.microsoft.com/msagent/downloads/ |
History
- 15 Sep 2003 Initial release
- 24 Sep 2003 Updated sourcecode