|
ZaΦßteΦnφk |
PokroΦil² |
Profesionßl |
|||||
|
|
|
||||||
Inteligentnφ asistenti v poΦφtaΦi P°edstavenφ mo₧nostφ
technologie MS Agent 2.0 |
||||||||
|
|
Budete pot°ebovat
p°ibli₧n∞ 1 hodinu |
|
OperaΦnφ systΘm
pou₧it² v p°φsp∞vku: Windows 2000 V²vojovΘ nßstroje:
Visual Basic 6.0 DalÜφ zdroje: www.microsoft.com/msagent/ |
||||
|
Vß₧enφ p°ßtelΘ,
v dubnovΘm vydßnφ rubriky se budeme v∞novat poznßvßnφ programovΘ architektury technologie s nßzvem Microsoft Agent 2.0, kterß je zodpov∞dnß za sprßvnou funkΦnost digitßlnφch poΦφtaΦov²ch pomocnφk∙, se kter²mi se m∙₧ete st°etnout v stßle v∞tÜφm mno₧stvφ modernφch aplikacφ. P°edm∞tem naÜeho zßjmu bude vysv∞tlenφ zßklad∙ uvedenΘ technologie a poslΘze praktickΘ ukßzky, kterΘ vßm pomohou s implementacφ poΦφtaΦov²ch pomocnφk∙ do vaÜich vlastnφch program∙.
Obsah |
P°idßnφ ovlßdacφho prvku MS
Agent Control 2.0 do soupravy nßstroj∙ |
Vytvo°enφ bublinovΘho okna
pomocnφka a zobrazenφ uvφtacφ zprßvy |
P°edstavenφ mo₧nostφ
technologie
Pojem äpoΦφtaΦovφ asistentiô byl do pov∞domφ u₧ivatel∙ a poslΘze i programßtor∙ zaveden ji₧ p°ed n∞jak²m Φasem. Pokud by jsme cht∞li b²t p°esn∞jÜφ, musφme se vrßtit a₧ do doby, kdy byl na trh uveden kancelß°sk² balφk Office spoleΦnosti Microsoft ve verzi 97. Sada program∙ tehdy, samoz°ejm∞ krom∞ jinΘho, p°inesla na v²slunφ revoluΦnφ prvek, jen₧ byl navφc velice peΦliv∞ zakomponovßn do u₧ivatelskΘho rozhranφ nabφzen²ch aplikacφ. Ano, Ülo o takzvanΘho pomocnφka Office, v podob∞ snad ji₧ legendßrnφ kancelß°skΘ sponky. PoΦφtaΦov² asistent vßs sprovßzel od prvnφch chvil. Sna₧il se vßm pomoci p°i uskuteΦn∞nφ r∙zn²ch ·kol∙, neustßle vßs upozor≥oval na to, jak lze vaÜφ prßci zefektivnit pou₧itφm jinΘho postupu Φi aplikacφ klßvesov²ch zkratek. Zkrßtka, byl stßle äna dohledô, co₧ u n∞kter²ch u₧ivatel∙ vyvolßvalo zßchvaty vzteku. V ₧ßdnΘm p°φpad∞ bych na tomto mφst∞ necht∞l polemizovat o skuteΦnosti, zda-li byla um∞lß inteligence digitßlnφho asistenta na po₧adovanΘ ·rovni nebo nikoliv. Pro nßs je myslφm nejd∙le₧it∞jÜφ fakt, ₧e pomocnφk byl postaven na dostateΦn∞ pevnΘm zßkladu, kter² dovoloval jeho pou₧itφ v r∙zn²ch situacφch (nap°. pomocφ jazyk∙ Visual Basic a Visual Basic pro aplikace (VBA)).
Budeme-li sledovat chronologii nßsledujφcφch verzφ aplikaΦnφ sady Office, uvidφme, ₧e pomocnφci si takΘ v nich vydobyly neot°esitelnou pozici. Domnφvßm se, ₧e v okam₧iku, kdy jste spat°ili animovanou postaviΦku pomocnφka, cht∞li jste n∞co podobnΘho mφt i ve vaÜem programu. Dobrou zprßvou je, ₧e na nßsledujφcφch °ßdcφch se dozvφte vÜe pot°ebnΘ pro to, aby se vßÜ sen stal skuteΦnostφ. JeÜt∞ p°edtφm se ale zkusme podφvat na technologii MS Agent 2.0 podrobn∞ji.
Technologie MS Agent 2.0 obsahuje mno₧stvφ objekt∙, kolekcφ, vlastnostφ a metod, kterΘ m∙₧ete kdykoliv pou₧φt a p°evzφt tak chovßnφ poΦφtaΦov²ch pomocnφk∙ do sv²ch rukou. VÜechny programovΘ souΦßsti technologie jsou nerozluΦn∞ spjaty s operaΦnφm systΘmem Windows a po jejich nainstalovanφ je ji₧ nelze ze systΘmu bezpeΦn∞ odstranit. Cφlovou skupinou pro aplikaci technologie jsou programßto°i, kte°φ pou₧φvajφ v²vojovΘ nßstroje, kterΘ podporujφ standard ActiveX (resp. COM, Component Object Model). Kolekce programov²ch komponent toti₧ obsahuje ovlßdacφ prvek ActiveX s nßzvem Microsoft Agent Control 2.0, pomocφ kterΘho je mo₧nΘ snadnou cestou zadßvat pomocnφkovi programovΘ pokyny.
|
Programov² k≤d ovlßdacφho prvku MS
Agent Control 2.0 je ulo₧en v souboru agentctl.dll. Tento soubor se nachßzφ ve slo₧ce MS AGENT ko°enovΘ
slo₧ky Windows. |
Do mno₧iny programovacφch nßstroj∙, kterΘ lze pou₧φt p°i programovßnφ poΦφtaΦov²ch pomocnφk∙, m∙₧eme za°adit Visual Basic a Visual C++, dßle pak takΘ Visual FoxPro, editor jazyka VBA v MS Office a rovn∞₧ MS Internet Explorer. VÜechna tato v²vojovß prost°edφ vßm mohou poslou₧it v p°φpad∞, ₧e budete chtφt zavolat poΦφtaΦovΘ pomocnφky.
SystΘmovΘ soubory technologie MS Agent 2.0 se nachßzejφ ve slo₧ce MS AGENT (tato slo₧ka je umφst∞na v ko°enovΘ slo₧ce systΘmu Windows). SystΘmovΘ soubory technologie jsou na nov∞jÜφch verzφch operaΦnφho systΘmu Windows (Millennium Edition, 2000 a XP) ji₧ standardn∞ zahrnuty do instalace systΘmu, a proto je nemusφte op∞tovn∞ instalovat. Jste-li ovÜem majitelem starÜφ verze systΘmu Windows (95 a 98), na domovΘ strßnce technologie (kterß je uvedena v navigaΦnφm panelu) najdete vÜe pot°ebnΘ.
Velmi d∙le₧itou informacφ je, ₧e poΦφtaΦov² pomocnφk p∙sobφ jako server typu out-of-process, co znamenß, ₧e asistent je v₧dy spouÜt∞n ve svΘm vlastnφm procesu. Tato skuteΦnost ostatn∞ vysv∞tluje, proΦ je pomocnφk zcela nezßvisl² od aplikace, kterß si vy₧ßdala jeho slu₧by (jde o tzv. klientskou aplikaci). Nezßvislß povaha technologie poΦφtaΦovΘho asistenta vßm dovoluje aplikovat kousky doposud nevφdanΘ. M∙₧ete nap°φklad nechat zobrazit na obrazovce n∞kolik pomocnφk∙ a t°eba uskuteΦnit mezi nimi rozhovor.
Osobn∞ si myslφm, ₧e mo₧nosti poΦφtaΦov²ch asistent∙ jsou pon∞kud p°ehlφ₧eny. V₧dy¥ jenom samotnß p°edstava, ₧e ve sv∞te vaÜeho poΦφtaΦe se nachßzφ inteligentnφ virtußlnφ bytost, je skuteΦn∞ jedineΦnß. A pokud je takΘ ävybrouÜenô programov² k≤d, jen₧ na°izuje pomocnφkovi, co mß kdy d∞lat, je poΦφtaΦov² asistent pomocnφkem v pravΘm slova smyslu. Dob°e, v∞°φm, ₧e m∙₧eme p°ejφt k programov²m ukßzkßm toho, co vÜechno m∙₧e pomocnφk d∞lat.
P°idßnφ ovlßdacφho prvku MS Agent Control 2.0 do soupravy nßstroj∙
P°i naÜich pokusech budeme v₧dy pracovat s ovlßdacφm prvkem MS Agent Control 2.0. Aby bylo mo₧nΘ vytvß°et instance tohoto prvku a nßsledn∞ je uklßdat p°φmo na plochu formulß°e, je nejd°φve zapot°ebφ p°idat do soupravy nßstroj∙ odkaz na p°φsluÜn² ovlßdacφ prvek. Postupujte teda podle nßsledujφcφch instrukcφ:
Obr. 1 û Vlo₧enφ odkazu na ovlßdacφ prvek do soupravy
nßstroj∙
|
Pokud by se po₧adovanß polo₧ka nenachßzela z n∞jakΘho blφ₧e
nespecifikovanΘho d∙vodu v seznamu, zkuste klepnout na tlaΦφtko Browse
a vyhledat soubor agentctl.dll. á |
áááá áááááááá
Obr. 2 û Ikona ovlßdacφho
prvku MS Agent Control 2.0 v souprav∞ nßstroj∙
V²born∞, prvnφ krok jste ·sp∞Ün∞ absolvovali. Dßle ji₧ staΦφ jenom umφstit instanci ovlßdacφho prvku na formulß° a zaΦφt s psanφm programovΘho k≤du. To vÜe bude nßm∞tem dalÜφ sekce tΘto studie.
Zobrazenφ poΦφtaΦovΘho pomocnφka
á
Umφst∞te na formulß° instanci ovlßdacφho prvku MS Agent Control 2.0 a takΘ instanci prvku CommandButton. OznaΦte instanci prvku s pomocnφkem a podφvejte se do okna vlastnostφ (Properties Window). M∙₧ete si vÜimnout, ₧e asistent podporuje jistΘ vlastnosti, no nenφ jich moc. Pokud budete chtφt, m∙₧ete zm∞nit jmΘno pomocnφka modifikacφ hodnoty vlastnosti Name (standardn∞ nese prvnφ instance jmΘno Agent1). PokraΦujte dvojit²m klepnutφm na instanci tlaΦφtka a zapsßnφm uvedenΘho programovΘho k≤du do okna editoru.
Agent1.Characters.Load "Pomocnφk1", "C:\Soubor_s_asistentem.acs"
Agent1.Characters("Pomocnφk1").Show
áá
Proto₧e m∙₧e tento fragment programovΘho k≤du p∙sobit na prvnφ pohled lehce komplikovan∞, pokusme se na n∞j podφvat zblφzka. P°edevÜφm je nutnΘ nahrßt sprßvn² profil asistenta ze souboru .ACS a tento pak p°idat do kolekce objekt∙ s nßzvem Characters. To provßdφ metoda Load, signaturu kterΘ tvo°φ dva parametry:
V souvislosti s druh²m parametrem je nutnΘ vzpomenout i relativnφ urΦenφ cesty k souboru s profilem pomocnφka. M∙₧ete pou₧φt k≤d v tΘto podob∞:
Agent1.Characters.Load "Pomocnφk1", "Genie.acs"
Agent1.Characters("Pomocnφk1").Show
Zde nenφ urΦena plnß cesta k souboru, ale cesta relativnφ. Ta p°edpoklßdß, ₧e soubor s asistentem (Genie.ACS) se nachßzφ ve slo₧ce CHARS, kterß je pod°φzenou slo₧kou slo₧ky MS AGENT.
Zobrazenφ pomocnφka na obrazovce poΦφtaΦe mß na starosti metoda Show. Pokud byste pou₧ili soubor s Φarovn²m d₧inem, uvedenΘ dva °ßdky k≤du by ho zviditelnily na obrazovce v podob∞ uvedenΘ na obr. 3.
Obr. 3 û Zobrazenφ pomocnφka pomocφ metody Show
|
P°i nahrßvßnφ profilu pomocnφka platφ pravidlo, ₧e pou₧itφm jednΘ
instance ovlßdacφho prvku m∙₧ete nahrßt jenom jeden profil asistenta ve
stejnou dobu. Pokud byste tedy cht∞li aktivovat dalÜφho pomocnφka, bylo by
pot°ebnΘ vytvo°it takΘ dalÜφ instanci ovlßdacφho prvku. |
Vytvo°enφ bublinovΘho okna pomocnφka a zobrazenφ uvφtacφ zprßvy
á
Aby mohl asistent zobrazit bublinovΘ okno s uvφtacφ zprßvou, pou₧ijeme metodu Speak s textov²m parametrem:
Agent1.Characters("Pomocnφk1").Speak "Dobr² den,
jß jsem vßÜ poΦφtaΦov² pomocnφk."
V²sledek
lze pozorovat na obr. 4.
Obr.
4 û BublinovΘ okno pomocnφka
Chcete-li,
m∙₧ete asistentovi poskytnout n∞kolik uvφtacφch zprßv a nechat na n∞m, kterou
zobrazφ. V tomto p°φpad∞ je nutnΘ odd∞lit jednotlivΘ v∞ty symbolem svislΘ
Φßry (|). Prostudujte si nφ₧e uveden² programov² k≤d:
áá
Agent1.Characters("Pomocnφk1").Speak _
"Dobr² den, jß jsem vßÜ poΦφtaΦov² pomocnφk.|" & _
"Ahoj, jak se mßte?|" & _
"Pot°ebujete pomoc?"
Pokud
budete zkouÜet Φinnost tohoto k≤du, pamatujte na pravidlo, ₧e v jednom
okam₧iku m∙₧e b²t z jednΘ instance ovlßdacφho prvku zobrazen pouze jeden
asistent. Proto kdybyste dvakrßt klepli na tlaΦφtko na formulß°i, Visual Basic
by ohlßsil chybu, v popisu kterΘ by vßm bylo sd∞leno, ₧e postaviΦka
pomocnφka ji₧ byla jednou naΦtena. Tento (mimochodem pom∞rnΘ Φast²) problΘm lze
vy°eÜit nap°φklad takto:
Private
Sub Command1_Click()
If
aktivace Then
symbol:
ááá
Agent1.Characters("Pomocnφk1").Show
ááá
Agent1.Characters("Pomocnφk1").Speak _
ááá "Dobr² den, jß
jsem vßÜ poΦφtaΦov² pomocnφk.|" & _
ááá "Ahoj, jak se
mßte?|" & _
ááá "Pot°ebujete
pomoc?"
Else
ááá Agent1.Characters.Load
"Pomocnφk1", "Genie.acs"
ááá GoTo symbol
End
If
á
aktivace = True
End Sub
Znßzorn∞n²
k≤d je pon∞kud netypick² hlavn∞ pou₧itφm konstrukce GoTo. Pr∙b∞h celΘho algoritmu
vypadß asi takto:
Jestli₧e
te∩ spustφte aplikaci, m∙₧ete klepnout na tlaΦφtko i potΘ, co je pomocnφk ji₧
viditeln² na obrazovce poΦφtaΦe. Nedojde k ₧ßdnΘ chyb∞, asistent jednoduÜe
vybere dalÜφ zprßvu a p°eΦte ji.
Zm∞na pozice pomocnφka na
obrazovce poΦφtaΦe
P°i
standardnφm zp∙sobu aktivace se pomocnφk zobrazuje v levΘm hornφm rohu
plochy vaÜeho monitoru. Jestli₧e vßm toto umφst∞nφ asistenta nevyhovuje, m∙₧ete
ho zm∞nit pomocφ dvou vlastnostφ Top a Left. Tyto vlastnosti majφ
stejn² v²znam jako jejich ekvivalenty ve Visual Basicu, spoleΦn∞ urΦujφ pozici
levΘho hornφho rohu okna pomocnφka.
|
AΦkoliv to nenφ na pohled z°ejmΘ, pomocnφk se nachßzφ v okn∞
(rozm∞ry tohoto okna by nem∞ly p°ekroΦit hranici 128 krßt 128 pixel∙). Pozadφ
okna a okraje okna jsou pr∙hlednΘ, proto je nem∙₧ete spat°it. á |
Budete-li
chtφt p°esunout asistenta 500 pixel∙ sm∞rem dol∙ a 450 pixel∙ sm∞rem doprava,
pou₧ijte tento k≤d:
Agent1.Characters("Pomocnφk1").Top = 500
Agent1.Characters("Pomocnφk1").Left = 450
V²sledek
je demonstrovßn na obr. 5.
Obr.
5 û P°esnΘ umφst∞nφ pomocnφka na k²₧enou pozici
P°esto₧e
vlastnosti Top a Left odvßd∞jφ svou prßci
znamenit∞, existuje dalÜφ zp∙sob, pomocφ kterΘho lze zm∞nit pozici asistenta.
Jde o metodu MoveTo objektu Character. P°edstavme si nejprve
zßpis metody a pak si k nφ povφme pßr slov.
agent.Characters
("CharacterID").MoveTo x,y, [Speed] á
Metoda
MoveTo pracuje s t°emi parametry,
p°iΦem₧ poslednφ z nich je voliteln². Prvnφ dva parametry urΦujφ sou°adnice
cφlovΘho levΘho hornφho bodu okna pomocnφka. Ji₧ vzpomφnan² voliteln² parametr
determinuje rychlost p°ehrßvanφ snφmk∙ animace pomocnφka p°i zm∞n∞ jeho pozice.
Tato rychlost je m∞°ena v milisekundßch.
Velkou
v²hodou metody MoveTo je skuteΦnost, ₧e zm∞na pozice
asistenta je vizußln∞ umocn∞na animacφ (obr. 6).
Obr. 6 û Zm∞na
pozice pomocnφka pou₧itφm metody MoveTo
UkonΦenφ prßce
s pomocnφkem
á
Jestli₧e
ji₧ nebudete chtφt vyu₧φt slu₧eb poΦφtaΦovΘho asistenta, mßte v zßsad∞ dv∞
mo₧nosti, jak jej äodstrßnitô z obrazovky poΦφtaΦe. Pomocnφka m∙₧ete bu∩
skr²t aplikacφ metody Hide, nebo jej zcela odstranit
z pam∞ti pou₧itφm metody Unload.
|
Dßvejte si pozor na pou₧itφ metody Hide. Tato metoda
zabezpeΦuje pouze skrytφ pomocnφka, nikoliv jeho odstran∞nφ z pam∞ti
poΦφtaΦe. Pam∞¥ovΘ zdroje, kterΘ obsazoval asistent m∙₧ete bezpeΦn∞ uvolnit
jenom pou₧itφm metody Unload. |
P°φkladnΘ
pou₧itφ obou metod m∙₧ete vid∞t nφ₧e.
Kdy₧ budete chtφt skr²t pomocnφka, zapiÜte
tento k≤d:
Agent1.Characters("Pomocnφk1").Hide
V p°φpad∞ nutnosti odstra≥te pomocnφka
z pam∞ti tφmto k≤dem:
Agent1.Characters.Unload
"Pomocnφk1"
Zßv∞r
Jestli₧e
vßs problematika ovlßdßnφ poΦφtaΦov²ch pomocnφk∙ zaujala, dejte mi v∞d∞t a jß
pak m∙₧u p°ipravit dalÜφ dφl z tΘto tΘmatiky, ve kterΘm by byly probrßny
pokroΦilΘ techniky implementace poΦφtaΦov²ch asistent∙.
Jßn
Hanßk