ET - Enhanced Tipp...
das sind Tipps, die eigentlich den Umfang eines Tipps bei weitem übersteigen und schon eher
ein kleine Abhandlung zu einem Teilstück der Programmierung mit VB darstellen.Und da haben wir heute etwas, was sicher in Zukunft an Einfluß
gewinnen wird, denn es wird mehr und mehr dazu übergegangen, dem User keine endlos lange
Online-Dokumentation bei Problemen und Nachfragen an die Hand zu geben, sondern über
interaktive Helfer (Wizards) , dem User beizustehen.
Die Vorläufer der hier zu behandelnden interaktiven Helferlein, sind Ihnen ggf. aus
Office97 bekannt. (ich sag nur .. Büroklammer)
Microsoft
Agenten
So sehen Sie gleich mal, wie sich MS einen Agenten vorstellt.
Mit was aber haben wir es hier zu tun.
Ich bin Merlin, einer der Microsoft Agenten
Vielleicht erahnen sie schon (trotz Reduzierung auf
16Farben) das wir es mit einem netten, kleinen, in 3D gehaltenen, viel Sound und noch mehr
Animation enthaltenen, interaktivem Hilfesystem zu tun bekommen werden.
Sie bekommen hier etwas in die Hand, von dem ich Ihnen verspreche, das Sie sehr schnell
erste Erfolge erzielen und das Ihnen viel Arbeit schon abgenommen wurde.
Was kann ein Microsoft Agent:
- in den reichlich 3 MB der Merlinsfx.acs Datei verstecken sich viele Animationen und
einige Klanguntermalungen, diese sind alle über Anweisungen einzeln und in Kombinationen
abspielbar. So können sie den Agenten an jede Stelle Ihres Monitors bewegen und im dort
Anweisungen ausführen lassen.
- Die Agenten zeigen Text in einer Sprechblase an.
- besitzen viele 3D Animationen
- Sie können beliebige *.wav Dateien wiedergeben und bewegen dazu sogar die Lippen.
- Sie können, mit entsprechender Unterstützung sogar Texte vorlesen.
- schlafen ein, wenn nichts passiert
- haben ein unterhaltsames Eigenleben, wenn keine Anweisungen erfolgen
- können Online genutzt werden
- können Sprachgesteuert werden
- kann man mit viel Geschick selbst erstellen
.... ich glaub das reicht, wenn ich Sie jetzt noch nicht
neugierig gemacht habe, schaff ich es nicht mehr.
Microsoft Agenten, die Erste
Gleich zu Beginn der Hinweis, daß ich Ihnen leider kein komplettes Testprogramm zur
Verfügung stellen kann, da die Agenten eine sehr speicherintensive Angelegenheit sind und
ich den Platz dazu einfach nicht habe.
Aber wir werden in diesem Tipp alle notwendigen Deklarationen für die Agenten behandeln
und am Ende werde ich Ihnen alle Quelle angeben, wo Sie die MS Agenten und alle
Zubehörteile zum Downloaden finden.
Microsoft Agenten = die interaktive Hilfe von Morgen ?
Ich glaube auch Sie werden beeindruckt sein, wenn Sie das erste mal die kleinen Kerls
auftauchen sehen und mit wenigen Anweisungen Ihnen Leben einhauchen. Aber selbst ohne
Anweisungen, haben sie ein Eigenleben und unterhalten den User.
Wenn Sie wissen, wie viele Anweisungen notwendig sind, damit Objekte nicht viereckig
angezeigt werden, dann werden Sie einschätzen können, wieviel Arbeit Ihnen hier schon
abgenommen wurde. Allerdings schlagen diese Agenten auch mit bis 3,5 MB zu Buche.
Systemvorbereitung
1. Zu erst einmal benötigen Sie auf dem System, auf dem der Agent zum Einsatz kommen soll
ein Control, die diesem Fall die AGENTCTL.DLL.
Dafür gibt es ein Installationsprogramm zum Einrichten (msagent_deu.exe)
http://activex.microsoft.com/controls/agent/MSagent.deu.exe
Möchten Sie auch die Sprachunterstützung nutzen, muß
ein zweites Programm auf dem System installiert werden.
http://activex.microsoft.com/controls/agent/cgram.exe
2. Ist dies auf Ihrem System eingerichtet, finden Sie unter Zusatzsteuerelemente den
Eintrag "Microsoft Agent Control", den Sie Ihrem Projekt hinzufügen müssen.
3. Fügen Sie nun das Control Ihrer Form hinzu.
Auf dem ersten Blick hält es wenig Eigenschaften bereit.
4. Besser sieht es schon aus, wenn Sie einen Doppelklick auf das Control machen und so die
Aktionen angezeigt bekommen. Es gibt außer den bekannten ( Click;DblClick; ) auch viele,
die speziell für dieses Control sinnvoll sind.
BalloonShow = Aktiv, wenn Text in Sprechblase
angezeigt wird
BalloonHide = Aktiv, wenn kein Text angezeigt wird
Show = Aktiv, wenn Agent
sichtbar
Hide = Aktiv, wenn Agent nicht
sichtbar
Move = Aktiv, wenn Agent
verschoben wird
RequestStart = Aktiv, wenn auf Antwort auf eine Aktion
gewartet wird
RequestComplete= Aktiv, wenn Antwort erfolgt ist
Restart = Aktiv, wenn System neu gestartet wird
Shutdown = Aktiv, wenn System herunter gefahren wird
5. Aber wie bringt man den Agenten nun zum Erscheinen. Sie haben zwar inzwischen das
Control zur Verfügung, der eigentliche Agent ist aber noch nicht vorhanden.
Microsoft Agenten = einzelne Datei mit Dateiendung *.acs
Merlin =
merlin.acs mit Sound =
merlinsfx.acs
Roboter = robby.acs
Genie (Geist) = genie.acs
... und noch einige andere mehr (Officelogo)
Diese Agenten müssen Sie sich erst noch besorgen, da ich Sie durch Ihre Dateigröße hier
nicht ablegen kann. Für unser Beispiel benötigen wir den Merlin Agenten.
http://www.microsoft.com/workshop/imedia/agent/merlinsfx.acs
Gehen wir aber zum Test davon aus, Sie besitzen Ihn schon und wir wollen nun Merlin in
unserem Demoprojekt nutzen. (mein persönlicher Favorit)
Allgemein/Deklarationen '(Typdefinition)
Dim Merlin As IAgentCtlCharacter
Form/Load
Agent1.Characters.Load "Merlin", App.Path & "\Merlinsfx.acs"
'gibt an, daß die Agentendatei im selben Verzeichnis ist, wie unser
Programm
Set Merlin = Agent1.Characters("Merlin")
'Damit man sich die lange Angabe bei jedem Aufruf sparen kann
Damit haben wir unseren Agenten verfügbar.
6. Einblenden Merlin.Show
7. Ausblenen Merlin.Hide
8. Bewegen Merlin.MoveTo 0,0
Dabei wird immer von den absoluten Monitorkoordinaten ausgegangen, nicht von der Form auf
dem das Control eingebunden ist.
Ein MoveTo 0,0 bewegt Merlin also nicht in die linke,obere Ecke der Form, sondern des
Monitors. Außerdem müssen Sie bei der Angabe beachten, das Merlin in Pixel arbeitet, Ihr
Screen.Width aber einen Wert in Twip zurückgibt. Aus diesem Grund müssen Sie die Angaben
noch durch 15 teilen.
Beispiel :
zentrieren von Merlin
Merlin.MoveTo (Screen.Width / 2) / 15 - Merlin.Width / 2, (Screen.Height / 2) / 15 -
Merlin.Height / 2
linke, obere Ecke des Monitors
Merlin.MoveTo 0 , 0
rechte, untere Ecke des Monitors
Merlin.MoveTo (Screen.Width / 15) - Merlin.Width , (Screen.Height / 15) - Merlin.Height
linke, obere Ecke der Form
Merlin.MoveTo (Form1.Left) / 15 , (Form1.Top) / 15
rechte, untere Ecke der Form
Merlin.MoveTo ((Form1.Left + Form1.Width) / 15) - Merlin.Width , ((Form1.Top +
Form1.Height) / 15) - Merlin.Height
9. Merlin ( die totale Soundunterstützung )
Soweit auf Ihrem System eine Soundkarte vorhanden ist, wird es jetzt richtig multimedial.
*Erstens besitzt Merlin in einigen Aktionen ( dazu kommen wir noch ) schon Sounds,
die die Animation unterstützt.
*Zweitens kann Merlin *.Wav Dateien sprechen ( dazu kommen wir noch )
*Drittens beherrscht Merlin nicht nur sprechen, er kann auch zuhören und läßt
sich
über vordefinierte Schlüsselwörter steuern.
*Und Viertens unterstützt er Sprachausgabe
(Microsoft Speech Application Programming Interface (SAPI) bzw.
Kompatible)
Dies bedeutet, Sie geben Merlin einen Textstring an und er spricht
diesen, dabei soll die
Wiedergabe recht gut sein, allerdings offenbart die Engine ihre
englischsprachige
Herkunft. Um diese Funktionalität nutzen zu können müssen Sie die
Sprachunterstützung
installiert haben. http://activex.microsoft.com/controls/agent/cgram.exe
Zu diesem Teil kann ich einstweilen aber nur den Text der Dokumentation
wiedergeben,
da ich noch keine eigenen Tests durchgeführt habe.
Mit ... Merlin.Speak "Hallo Welt" ... zeigt er den
Text über Sprechblase an.
Bei unterstützter Soundausgabe wird der Text ebenfalls akustisch ausgegeben.
Dabei ist Ihrer Phantasie keine Grenze gesetzt.
Auch zu den Sprechblasen gibt es einige variable Eigenschaften. (Fonts)
Und nun etwas, was mich ganz speziell am meisten begeistert hat.
Nehmen Sie mit einem Wav-Editor ein File auf, in dem Sie einige Worte
sprechen. Speichern Sie die Datei in Ihr Applikationsverzeichnis unter Merlin.wav
und geben Sie nun Merlin folgende erweiterte Anweisung.
Mit ... Merlin.Speak "Text in Sprechblase" , "Pfad zur *.wav
Datei" ... zeigt er den Text über Sprechblase an und spielt
gleichzeitig die *.wav Datei ab.
Merlin blendet nun den Text ein und spielt die *.Wav Datei ab.
Aber das Beste ist, ... er bewegt den Mund, als würde er den Text sprechen.
10. Merlin tu was (Animation total)
Das Merlin nicht in viereckigem Kasten daher kommt, sondern als auf dem Hintergrund frei
bewegliches Objekt und das in schönem 3D, davon schrieb ich schon, aber er kann noch viel
mehr. Dazu sind zu jedem Agenten vordefinierte Aktionen vorhanden.
Für Merlin gibt es die folgenden, die immer mit
Merlin.Play "Anweisung" angegeben werden.
"Acknowledge"
'kurzes Nicken
"Alert"
'erschrockener Blick
"AlertReturn"
"Announce"
'Trompetenfanfare
"AnnounceReturn"
"Blink"
'Augenaufschlag
"Confused"
'Überlegend, am Kopf kratzend
"ConfusedReturn"
"Congratulate"
'Pokal hochhebend
"CongratulateReturn"
"Congratulate_2" 'klatschend
"Decline" 'fragend
- kopfschütteln
"DeclineReturn"
"DoMagic1" 'Beginn
Zauber
"DoMagic2"
'Fortsetzung Zauber
"DoMagicReturn"
"DontRecognize"
'Ohren aufsperrend
"DontRecognizeReturn"
"Explain" 'fragend,
Arme auseinander
"ExplainReturn"
"GestureDown" 'nach
vorn beugend
"GestureDownReturn"
"GestureLeft" 'nach
rechts zeigend
"GestureLeftReturn"
"GestureRight"
'nach links zeigend
"GestureRightReturn"
"GestureUp" 'nach
oben zeigend
"GestureUpReturn"
"GetAttention"
'nach vorn beugend, an die Scheibe klopfend
"GetAttentionReturn"
"GlanceDown"
'leichte Beuge, blick nach unten
"GlanceLeft"
'leichte Beuge, blick nach rechts
"GlanceRight"
'leichte Beuge, blick nach links
"GlanceUp" 'leichte
Beuge, blick nach oben
"Greet"
'Verbeugung
"GreetReturn"
"Hear_1" 'Zuhören
- beidseitig große Ohren
"Hear_2" 'Zuhören
- nach rechts kopf beugend
"Hear_3" 'Zuhören
- linkes großes Ohr
"Hear_4" 'Zuhören
- rechts großes Ohr
"Hide"
'ausblenden
"Idle1_1" 'Kopf
heben
"Idle1_2" 'Kopf
nach rechts
"Idle1_3" 'Kopf
nach links
"Idle1_4" 'Kopf
nach oben
"Idle2_1" 'Kopf
nach unten auf Zauberstab blickend
"Idle2_2" 'Hände
verschränkend
"Idle3_1"
'einschlafend / Zustand aufheben
"Idle3_1Return"
"Idle3_2" 'aus dem
Schlaf erwachen
"LookDown" 'Blick
nach unten
"LookDownBlink"
'Blick nach unten - Augenaufschlag
"LookDownReturn"
"LookLeft" 'Blick
nach rechts
"LookLeftBlink"
'Blick nach rechts - Augenaufschlag
"LookLeftReturn"
"LookRight" 'Blick
nach links
"LookRightBlink" 'Blick nach links -
Augenaufschlag
"LookRightReturn"
"LookUp" 'Blick
nach oben
"LookUpBlink"
'Blick nach oben - Augenaufschlag
"LookUpReturn"
"MoveDown" 'Flug
nach unten - Startposition
"MoveDownReturn"
"MoveLeft" 'Flug
nach rechts - Startposition
"MoveLeftReturn"
"MoveRight" 'Flug
nach links - Startposition
"MoveRightReturn"
"MoveUp" 'Flug nach
oben - Startposition
"MoveUpReturn"
"Pleased" 'freudig,
wartend
"PleasedReturn"
"Processing" 'vor
Topf, grünes, brodelndes Gemisch rührend / Zustand
"ProcessingReturn"
"Read"
'ließt in Buch
"ReadContinued"
'Fortsetzung, ließt in Buch
"ReadReturn"
"Reading" 'ließt
in Buch / Zustand aufheben
"ReadingReturn"
"RestPose" 'starre
Pose
"Sad"
'tief Durchatmend
"SadReturn"
"Searching" 'blickt
in Zauberkugel / Zustand aufheben
"Show"
'einblenden
"StartListening" 'zuhörend, Hand an
rechtem vergrößertem Ohr
"StartListeningReturn"
"StopListening"
'beide Ohren zuhaltend
"StopListeningReturn"
"Suggest" 'Idee,
Lampe einblendent und Hände darauf gerichtet
"SuggestReturn"
"Surprised"
'kleiner Sprung
"SurprisedReturn"
"Think"
'überlegend, Hand am
Bart
"ThinkReturn"
"Uncertain" 'nach
vorn gebaugt, wie Sprung ins Wasser
"UncertainReturn"
"Wave"
'winkend mit der linken
Hand
"WaveReturn"
"Write"
'in Buch schreibend
"WriteContinued" 'Fortsetzung, in Buch
schreibend
"WriteReturn"
"Writing" 'In Buch
schreibend / Zustand aufheben
"WritingReturn"
Legende :
1. ...Return = steht immer für die
Zurückanimation aus der ausgeführten Bewegung
2. die in der Beschreibung angegebenen Richtungen beziehen sich im Gegensatz zur
Anweisung auf die Richtung, wie Sie der User sieht
3. Zustand aufheben = Merlin verbleibt in der Aktion, bis sie wieder aufgehoben wird
4. IDLE = wenn längere Zeit keine Aktionen
erfolgen überfällt Merlin in die
Müdigkeit. Dabei gibt es drei Stufen, bis er ganz einschläft und
schnarcht.
Dafür gibt es auch zwei Aktionen, die auswertbar sind (wie Click und
DblClick zBsp.)
IdleStart und IdleComplete
11. Abauf
So könnte ein kleines Demoprogramm aussehen
- Merlin an der linken, oberen Ecke der Form einblenden
- Merlin über Sprechblase "Guten Tag" sagen lassen
- Merlin in die rechte, untere Ecke der Form fliegen lassen
- Merlin zaubern lassen
- Merlin über Sprechblase "Auf Wiedersehen" sagen lassen
- Merlin ausblenden
Merlin.MoveTo (Form1.Left) / 15 , (Form1.top) / 15
Merlin.Show
Merlin.Speak "Guten Tag"
Merlin.MoveTo ((Form1.Left + Form1.Width) / 15) - Merlin.Width ,
((Form1.Top + Form1.Height) / 15) - Merlin.Height
Merlin.Play "DoMagic1" 'Beginn Zauber
Merlin.Play "DoMagic2" 'Fortsetzung Zauber
Merlin.Play "DoMagicReturn"
Merlin.Speak "Auf Wiedersehen"
Merlin.Hide
12. Online
Darüber werd ich hier nichts weiter berichten, wen es aber interessiert, dieses Control
läßt sich auch auf Internetseiten einsetzen und die Agenten lassen sich direkt aus dem
Internet laden und mittels .get Anweisung lassen sich die einzelnen Aktionen im
Hintergrund laden.
<OBJECT classid="clsid:F5BE8BD2-7DE6-11D0-91FE-00C04FD701A5"
CODEBASE =
"http://activex.microsoft.com/controls/agent/MSagent.exe#VERSION=1,5,0,0"
id=Agent >
</OBJECT>
Ergänzungen zu diesem Teil der Arbeit mit MS Agenten
werden gern in den Tipp mit aufgenommen. Wer sich also daran versucht, der kann gern seine
Erfahrungen allen bekannt machen. Einstweilen hätte ich hier nur eine Demoseite für
VB-Script Implementierung. vbscript.zip
13. Probleme
Wenn Sie dem Ganzen einen Nutzwert geben wollen, werden Sie sicher auch schnell auf ein
Problem stoßen, für das auch ich noch keine 100% Lösung habe.
VB arbeitet seine Anweisung eine nach dem anderen ab, auch wenn eine Animation noch nicht
beendet ist. Wenn sie also zum Beispiel einen CommandButton erst anzeigen
wollen, wenn Merlin eine bestimmte Aktion ausgeführt hat, so werden Sie feststellen, der
CommandButton ist schon vorher sichtbar. Oder geben Sie Merlin.Play
"Processing" und Merlin.Stop hintereinander an, Sie werden die Animation
garnicht angezeigt bekommen.
Zwar gibt es eine Request Auswertung
Dim MyRequest As Object
Set MyRequest = Merlin.Speak("Danke und auf Wiedersehen")
Do While Not MyRequest.Status = 0
Loop
... so daß erst vorgefahren wird, wenn die Animation beendet ist,
aber leider gelang mir dies nur in der Entwurfsumgebung mit der
Einzelschritt
Abarbeitung.
Dort erreicht der Status den Wert 0 für Complete, in jedem anderen
Fall bleibt es in der
Schleife hängen.
Im Moment kann ich nur anbieten, künstliche Wartezeiten in die
Abarbeitung
einzubauen .....
Private Declare Sub Sleep Lib "kernel32" (ByVal
dwMilliseconds As Long)
Sleep 5000 'unterbricht für 5 Sek.
... oder die Abarbeitung solange zu
unterbrechen, bis ein anderer auswertbarer
Zustand eingetreten ist. (Agent Koordinaten o.ä.)
Wenn jemand beim Testen auf eine bessere Lösung stößt, so baue ich Sie gern hier mit
ein. Das gleiche gilt, sobald mir etwas besseres gelingt.
13. Bezugsquellen
Wie versprochen folgen nun alle notwendigen Downloadquellen, sowohl der benötigten
Programme, als auch der Agenten und eine Reihe von Dokumentationen zum Thema.
Links zum Thema :
Microsoft Agent Control
Sprachausgabe / Spracherkennung
Errorcodes
FAQ
Editor
Lizenz
MS Agent Character
Merlin
Genie
Robby
FAQ - Mail
msagent@microsoft.com
Download benötigter Programme
Downlaod MS Agent (deutsch)
http://activex.microsoft.com/controls/agent/MSagent.deu.exe
Download Sprachunterstützung
http://activex.microsoft.com/controls/agent/cgram.exe
Download Character Editor
http://www.microsoft.com/workshop/imedia/agent/ace.exe
Download Sound Editing Tool
http://www.microsoft.com/workshop/imedia/agent/LISET.exe
Download VB-Beispielprojekt
http://www.microsoft.com/workshop/imedia/agent/hellovb.zip
Download Genie Agent
http://www.microsoft.com/workshop/imedia/agent/genie.acs
Download Merlin Agent
http://www.microsoft.com/workshop/imedia/agent/merlin.acs
Download Merlin Agent mit Sound
http://www.microsoft.com/workshop/imedia/agent/merlinsfx.acs
Download Robby Agent
http://www.microsoft.com/workshop/imedia/agent/robby.acs
2007 : http://www.microsoft.com/msagent/downloads/developer.asp
|