IntegrovanΘ prost°edφ rubriky Visual Basic

Autor: Jßn Hanßk

TΘma m∞sφce

Inteligentnφ znaΦky (Smart Tags)

╚asovß nßroΦnost

(min):

125

ZaΦßteΦnφk

PokroΦil²

Profesionßl

Pou₧it² operaΦnφ systΘm : Hlavnφ v²vojov² nßstroj :

DalÜφ v²vojov² software :

Jin² software :

Windows 2000 SP3

Visual Basic 6.0 SP 5

Microsoft Office XP

Smart Tags SDK v.1.1

 

 

Vß₧enφ Φtenß°i,

 

vßnoΦnφ vydßnφ sekce TΘma m∞sφce bude vskutku jedineΦnΘ, proto₧e se budeme v∞novat oblasti, kterß je pro mnoho programßtor∙ velkou neznßmou, a sice v²vojem vlastnφch inteligentnφch znaΦek pro kancelß°skΘ aplikace z balφku Office XP. Poznßte funkΦnφ jßdro, kterΘ pohßnφ technologii inteligentnφch znaΦek a p°ipravφte si svou vlastnφ dynamicky linkovanou knihovnu (ActiveX DLL) s k≤dem vaÜφ inteligentnφ znaΦky. P°eji vßm p°φjemnΘ poΦtenφ.

 

Obsah

Inteligentnφ znaΦky na prvnφ pohled

Spoluprßce inteligentnφch znaΦek a aplikacφ Office XP

Architektura inteligentnφch znaΦek

Vytvß°φme inteligentnφ znaΦku

Implementace Φlen∙ rozhranφ ISmartTagRecognizer

Implementace Φlen∙ rozhranφ ISmartTagAction

Kompilace k≤du inteligentnφ znaΦky

Registrace inteligentnφ znaΦky v operaΦnφm systΘmu

Registrace akce (action) inteligentnφ znaΦky

Registrace identifikßtoru (recognizer) inteligentnφ znaΦky

Testovßnφ inteligentnφ znaΦky

 

 

Inteligentnφ znaΦky na prvnφ pohled

 

Inteligentnφ znaΦky p°edstavujφ modernφ technologii, kterß se poprvΘ objevila v softwarovΘm balφku kancelß°sk²ch aplikacφ Office XP od spoleΦnosti Microsoft. P∙vodn∞ se inteligentnφ znaΦky jmenujφ Smart Tags, ovÜem my budeme pracovat s ji₧ celkem v₧it²m Φesk²m ekvivalentem. Pokud jste tedy n∞kdy m∞li tu Φest pracovat s (prozatφm) poslednφ verzφ balφku Office, pravd∞podobn∞ jste se ji₧ s inteligentnφmi znaΦkami setkali. Pokud ne, vydejte se s nßmi na krßtkou seznamovacφ cestu, v rßmci kterΘ uvidφte, proΦ jsou inteligentnφ znaΦky tak d∙le₧itou a rovn∞₧ vzruÜujφcφ technologiφ.

 

Hlavnφm krokem, kter² vedl v²vojß°e z Redmondu k vytvo°enφ a za°azenφ inteligentnφch znaΦek do populßrnφho softwaru bylo, jak jinak, usnadn∞nφ prßce finßlnφch u₧ivatel∙ s mno₧stvem r∙zn²ch typ∙ zpracovßvan²ch dat. Vezm∞me si t°eba pr∙m∞rnΘho u₧ivatele poΦφtaΦe, jen₧ ovlßdß na p°ijatelnΘ ·rovni prßci s operaΦnφm systΘmem, textov²m procesorem a tabulkov²m kalkulßtorem. Tento u₧ivatel nejspφÜ Φasto pracuje s textov²mi dokumenty a tabulkov²mi seÜity. Je takΘ vφce ne₧ pravd∞podobnΘ, ₧e mnoho ·daj∙, kterΘ se nachßzejφ v u₧ivatelov²ch tabulkßch, mß jistou souvislost s textov²mi daty, kterΘ u₧ivatel pou₧φvß p°i psanφ dokument∙ v textovΘm procesoru. A dokonce je mo₧nΘ, ₧e n∞kterΘ typy dat z textov²ch dokument∙ a tabulek mohou slou₧it pro pot°eby ΦasovΘho managementu v aplikaci Outlook. Je-li tomu tak, proΦpak neusnadnφme u₧ivateli jeho prßci a nezabudujeme do aplikacφ technologii, kterß bude vstupnφ data analyzovat a v p°φpad∞ pot°eby je kombinovat, navzßjem formßtovat, nebo provßd∞t nad t∞mito daty jinΘ po₧adovanΘ operace? Ano, takto patrn∞ vypadala poΦßteΦnφ myÜlenka Φlen∙ v²vojovΘho t²mu pro stavbu inteligentnφch znaΦek.

 

Jestli₧e u₧ivatel zapφÜe do textovΘho dokumentu jmΘno svΘho p°φtele nebo obchodnφho partnera, aplikace by m∞la b²t natolik inteligentnφ, aby zadan² textov² °et∞zec poznala a nabφdla u₧ivateli n∞kolik akcφ, kterΘ lze s p°edm∞tn²m °et∞zcem uskuteΦnit. V tomto p°φpad∞ by mohlo jφt o zaslßnφ elektronickΘ zprßvy danΘ osob∞, nebo o p°idßnφ jmΘna osoby do elektronickΘho diß°e u₧ivatele.

 

Z pohledu u₧ivatele je nejpodstatn∞jÜφ zejmΘna fakt, ₧e ob∞ operace lze realizovat pouh²m klepnutφm myÜφ a nenφ nutnΘ manußln∞ kopφrovat data, spouÜt∞t dalÜφ aplikace a data op∞tovn∞ vklßdat.

 

Technologie, kterou p°inßÜejφ inteligentnφ znaΦky, je vyu₧itelnß v daleko ÜirÜφm aplikaΦnφm spektru. Inteligentnφ znaΦky se osv∞dΦujφ nap°φklad p°i kopφrovßnφ Φßsti textu z jednoho dokumentu do jinΘho. Po vlo₧enφ textu se objevφ inteligentnφ znaΦka, kterß ukazuje, ₧e je mo₧nΘ s vlo₧en² textem n∞co provΘst, t°eba zladit jeho formßtovßnφ s formßtovßnφ cφlovΘho dokumentu, do n∞ho₧ byl text vlo₧en (obr. 1).

 

 

Obr. 1 û Inteligentnφ znaΦka v praxi

 

AutomatickΘ opravy textu jsou rovn∞₧ reprezentovßny prost°ednictvφm podporovanΘ inteligentnφ znaΦky. Ihned ze zaΦßtku je ovÜem dobrΘ mφt na pam∞ti, ₧e s inteligentnφmi znaΦkami se m∙₧ete st°etnou jenom v Office XP (2002), p°edchozφ verze touto technologiφ nedisponujφ.

 

AΦkoliv je vyu₧itφ inteligentnφch znaΦek nejintenzivn∞jÜφ prßv∞ v aplikacφch Office XP (Word XP, Excel XP a Outlook XP), ve skuteΦnosti se s inteligentnφmi znaΦkami m∙₧ete setkat takΘ v HTML dokumentech.

 

Ka₧dß aplikace z balφku Office XP (2002) obsahuje jistou sadu zabudovan²ch inteligentnφch znaΦek, kterΘ se automaticky aktivujφ v p°φpad∞ pot°eby (o technickΘm pohledu na zp∙sob prßce inteligentnφch znaΦek budeme mluvit za chvφli). Krom∞ inteligentnφch znaΦek, kterΘ jsou implicitn∞ vestav∞nΘ do aplikacφ Office XP, existujφ takΘ dalÜφ inteligentnφ znaΦky, a to bu∩ p°φmo od spoleΦnosti Microsoft, nebo od jin²ch softwarov²ch firem. DalÜφ mo₧nostφ, jak zφskat novΘ inteligentnφ znaΦky, je jejich samostatnΘ naprogramovßnφ a zaregistrovßnφ v operaΦnφm systΘmu. A prßv∞ tuto alternativu si p°edvedeme podrobn∞ji na dalÜφch °ßdcφch tohoto dokumentu.

 

 

Spoluprßce inteligentnφch znaΦek a aplikacφ Office XP

 

VÜechny inteligentnφ znaΦky, se kter²mi se m∙₧ete setkat v aplikacφch Word XP a Excel XP, musejφ b²t p°ed sv²m pou₧itφm platn∞ zaregistrovßny v operaΦnφm systΘmu. Tato registrace je mimo°ßdn∞ d∙le₧itß, proto₧e jenom registrovanΘ inteligentnφ znaΦky jsou schopnΘ ob∞ aplikace rozeznat a pracovat s nimi. Popoje∩me vÜak o kousek dßl a pov∞zme si, jak s inteligentnφmi znaΦkami pracuje nap°φklad aplikace Word XP. Po ka₧dΘm spuÜt∞nφ aplikace Word XP je realizovßno zjiÜt∞nφ, jakΘ typy inteligentnφch znaΦek jsou zaregistrovanΘ v operaΦnφm systΘmu. PotΘ aplikace sestavφ seznam nalezen²ch inteligentnφch znaΦek a provede jejich naΦtenφ.

 

ZjiÜt∞nφ zaregistrovan²ch inteligentnφch znaΦek a jejich implementace do aplikace trvß pouze n∞kolik sekund.

 

Jakmile u₧ivatel zapφÜe do dokumentu textov² °et∞zec, technologie inteligentnφch znaΦek podrobφ °et∞zec anal²ze a zjistφ, zdali se jednß o äcitliv²ô °et∞zec. Pokud je °et∞zec citliv², znamenß to, ₧e byl rozpoznßn jako typ dat, nad kter²m operuje jistß inteligentnφ znaΦka. Citliv² textov² °et∞zec je opat°en teΦkovan²m podtr₧enφm fialovΘ barvy. Kdy₧ u₧ivatel najede kurzorem myÜi na citliv² textov² °et∞zec, objevφ se tlaΦφtko se Üipkou. Ukß₧e-li u₧ivatel na objevivÜφ se tlaΦφtko, bude zobrazena kontextovß nabφdka se seznamem akcφ, kterΘ lze nad vstupnφm typem dat (tedy nad textov²m °et∞zcem) provΘst. Po zvolenφ po₧adovanΘ akce je tato provedena, p°iΦem₧ v²sledek akce je rozliΦn² a zßvisφ od typu inteligentnφ znaΦky. N∞kterΘ inteligentnφ znaΦky mohou m∞nit formßtovßnφ textovΘho °et∞zce, jinΘ zase spouÜt∞t externφ aplikace Φi internetovΘ prohlφ₧eΦe.

 

 

Obr. 2 û Spoluprßce inteligentnφch znaΦek a aplikace Word XP

 

 

áArchitektura inteligentnφch znaΦek

 

Technologie inteligentnφch znaΦek je postavena na vlastnφm aplikaΦnφm programov²m rozhranφm (API), kterΘ vyhovuje specifikacφm standardu COM (Component Object Model). API inteligentnφch znaΦek je ulo₧eno v typovΘ knihovn∞ s nßzvem Microsoft Smart Tags 1.0 (tato knihovna je dodßvßna spoleΦn∞ s Office XP). AplikaΦnφ programovΘ rozhranφ obsahuje dv∞ d∙le₧itß rozhranφ, kterß budeme p°i v²voji vlastnφ inteligentnφ znaΦky rozhodn∞ pot°ebovat. Jde o rozhranφ ISmartTagRecognizer a ISmartTagAction. JeÜt∞ p°edtφm, ne₧ se na ob∞ rozhranφ podφvßme blφ₧e, si musφme oz°ejmit dva pojmy, jimi₧ jsou identifikßtor (recognizer) a akce (action). Znalost obou termφn∙ je nezbytn∞ nutnß pro pochopenφ zp∙sobu prßce inteligentnφch znaΦek.

 

Identifikßtor (recognizer) p°edstavuje programov² k≤d, pomocφ n∞ho₧ cφlovß aplikace rozeznß citlivß data. Citlivß data jsou data, kterß mohou b²t pomocφ danΘ inteligentnφ znaΦky podrobena jist²m programov²m operacφm. Ka₧dß inteligentnφ znaΦka obsahuje uzav°enou mno₧inu dat, kterou dokß₧e identifikovat. Identifikace dat je realizovßna prßv∞ pomocφ identifikßtoru. Identifikßtor sleduje, s jak²mi daty u₧ivatel pracuje. V p°φpad∞ aplikace Word XP jsou t∞mito daty textovΘ °et∞zce. Ka₧d² zadan² textov² °et∞zec je prozkoumßn prost°ednictvφm identifikßtor∙ vÜech podporovan²ch inteligentnφch znaΦek. Pokud zadan² textov² °et∞zec vyhovuje specifikacφm identifikßtoru jednΘ z inteligentnφch znaΦek, je tento textov² °et∞zec rozeznßn a z pohledu API oznaΦen jako citliv². SkuteΦnost, ₧e mßme do Φin∞nφ s citliv²m textov²m °et∞zcem, je vizußln∞ umocn∞na teΦkovan²m podtr₧enφm tohoto °et∞zce. V²slednφm produktem prßce identifikßtoru je zjiÜt∞nφ citliv²ch dat. Jsou-li k dispozici citlivß data, je mo₧nΘ nad t∞mito daty uskuteΦnit jistΘ programovΘ operace, kter²m se v prost°edφ API inteligentnφch znaΦek °φkß akce (actions). Akce p°edstavujφ operace, kterΘ lze s citliv²mi daty provΘst. Vizußln∞ jsou vÜechny akce seskupeny do jednotnΘ kontextovΘ nabφdky (obr. 3).

 

 

Obr. 3 û Akce inteligentnφ znaΦky

 

Pokud u₧ivatel klepne na n∞kterou z polo₧ek kontextovΘ nabφdky, spustφ se p°φsluÜnß akce. Jak si m∙₧ete vÜimnout, jedna inteligentnφ znaΦka m∙₧e disponovat i n∞kolika akcemi, p°iΦem₧ poΦet podporovan²ch akcφ nenφ omezen a je jenom na programßtorovi, kolik akcφ do vlastnφ inteligentnφ znaΦky implementuje.

 

Proces prßce identifikßtoru a akcφ inteligentnφch znaΦek m∙₧ete vid∞t na obr. 4.

 

 

Obr. 4 û Proces prßce identifikßtoru a akcφ inteligentnφch znaΦek

 

Ob∞ma vysv∞tlen²m termφn∙m odpovφdajφ ji₧ zmφn∞nß rozhranφ: K≤d pro implementaci identifikßtoru (recognizer) obsahuje rozhranφ ISmartTagRecognizer, zatφmco pro akce (actions) inteligentnφch znaΦek je k dispozici rozhranφ ISmartTagAction. Budete-li chtφt vytvo°it vlastnφ inteligentnφ znaΦku, budete muset implementovat n∞kolik vlastnostφ a metod obou rozhranφ.

 

Visual Basic 6.0 nenφ jedin²m prost°edφm, ve kterΘm lze vytvß°et dynamicky linkovanou knihovnu (ActiveX DLL) s k≤dem inteligentnφ znaΦky. Za tφmto ·Φelem m∙₧ete pou₧φt takΘ dalÜφ programovacφ jazyky, kterΘ jsou otev°eny specifikaci COM, nap°φklad Visual C++.

 

 

Vytvß°φme inteligentnφ znaΦku

 

KoneΦn∞ se dostßvßme k samotnΘmu procesu v²voje inteligentnφ znaΦky. Vytvß°enφ inteligentnφ znaΦky bude demonstrovat postup, jen₧ se nachßzφ na nßsledujφcφch °ßdcφch. NaÜe inteligentnφ znaΦka bude vyhledßvat v textovΘm dokumentu aplikace Word XP specifickΘ poΦφtaΦovΘ v²razy, jako nap°. CPU, AGP a dalÜφ. Pokud bude v dokumentu nalezen jeden z podporovan²ch v²raz∙, bude zobrazeno akΦnφ tlaΦφtko s kontextußlnφ nabφdkou. V nabφdce bude umφst∞na jedna akce, resp. polo₧ka, po aktivaci kterΘ bude spuÜt∞n internetov² prohlφ₧eΦ s adresou elektronickΘ poΦφtaΦovΘ encyklopedie (v naÜem p°φpad∞ vymyÜlenΘ). Nu₧e, pus¥me se do prßce:

 

  1. Spus¥te Visual Basic 6.0 a vytvo°te aplikaci typu ActiveX DLL.
  2. Projekt p°ejmenujte na MojeZnaΦka.
  3. T°φdu Class1 p°ejmenujte na CIdentifikßtor.
  4. Ujist∞te se, ₧e v sekci Declarations t°φdy CIdentifikßtor je zapsßn °et∞zec Option Explicit, kter² zabezpeΦuje vynucenφ deklarace prom∞nn²ch.
  5. Vyberte nabφdku Project a klepn∞te na polo₧ku References. V seznamu Available References vyhledejte polo₧ku Microsoft Smart Tags 1.0 Type Library a zatrhn∞te ji. PotΘ stiskn∞te tlaΦφtko OK. Tφmto jste p°idali do vaÜeho projektu odkaz na vzpomφnanou typovou knihovnu, v nφ₧ se nachßzejφ rozhranφ ISmartTagRecognizer a ISmartTagAction.á

 

Nynφ zaΦneme s implementacφ po₧adovan²ch vlastnostφ a metod rozhranφ ISmartTagRecognizer. VÜechen k≤d budete umφs¥ovat p°φmo do t°φdy CIdentifikßtor. á

 

 

Implementace rozhranφ ISmartTagRecognizer

 

  1. Ihned za p°φkaz Option Explicit vlo₧te tento °ßdek k≤du:

 

Implements ISmartTagRecognizer

 

P°φkaz Implements °φkß, ₧e budeme chtφt implementovat vlastnosti a metody rozhranφ ISmartTagRecognizer.

 

  1. Ze vÜeho nejd°φve zaΦneme s implementacφ vlastnostφ ProgID, Name a Desc. Popis vlastnostφ je uveden v tab. 1.

 

Nßzev vlastnosti

Charakteristika

ProgID

JednoznaΦn² programov² identifikßtor t°φdy, kterß implementuje rozhranφ ISmartTagRecognizer. Tento identifikßtor je jazykov∞ nezßvisl² a nabφzφ zp∙sob, jak se odkazovat na DLL s k≤dem t°φdy prost°ednictvφm objektov²ch model∙ cφlov²ch aplikacφ.

Name

JmΘno pro identifikßtor. Toto jmΘno se zobrazuje na zßlo₧ce Smart Tags dialogovΘho okna AutoCorrect Options v aplikacφch Word XP a Excel XP. (Nabφdka AutoCorrect Options je dostupnß z nabφdky Tools).

Desc

StruΦnß charakteristika druhu Φinnosti identifikßtoru inteligentnφ znaΦky.

 

Tab. 1 û Charakteristika vlastnostφ ProgID, Name s Desc

 

Vlastnosti ProgID, Name a Desc jsou urΦeny jenom pro Φtenφ (read-only).

 

  1. K≤d vlastnostφ ProgID, Name a Desc je nßsledovnφ:

 

Private Property Get ISmartTagRecognizer_ProgId() As String

ISmartTagRecognizer_ProgId = "MojeZnaΦka.Identifikßtor"

End Property

 

Private Property Get ISmartTagRecognizer_Name _

(ByVal LocaleID As Long) As String

ISmartTagRecognizer_Name = "Moje inteligentnφ znaΦka"

End Property

 

Private Property Get ISmartTagRecognizer_Desc _

(ByVal LocaleID As Long) As String

ISmartTagRecognizer_Desc = "Jednoduch² p°φklad pou₧itφ" _

& "inteligentnφ znaΦky."

End Property

 

  1. PokraΦujeme implementacφ vlastnostφ SmartTagCount, SmartTagName a SmartTagDownloadURL. Popis vlastnostφ se nachßzφ v tab. 2.

 

Nßzev vlastnosti

Charakteristika

SmartTagCount

Vlastnost urΦuje poΦet inteligentnφch znaΦek, kterΘ je identifikßtor schopen rozeznat.

SmartTagName

JedineΦnΘ pojmenovanφ pro typy inteligentnφch znaΦek, kterΘ podporuje identifikßtor.

SmartTagDownloadURL

UrΦenφ adresy, ze kterΘ lze stßhnout novΘ akce pro danou inteligentnφ znaΦku.

 

Tab. 2 û Charakteristika vlastnostφ SmartTagCount, SmartTagName s SmartTagDownloadURL

 

  1. Programov² k≤d vlastnostφ SmartTagCount, SmartTagName a SmartTagDownloadURL mß tuto podobu:

 

Private Property Get ISmartTagRecognizer_SmartTagCount() As Long

ISmartTagRecognizer_SmartTagCount = 1

End Property

 

Private Property Get ISmartTagRecognizer_SmartTagName _

(ByVal SmartTagID As Long) As String

If SmartTagID = 1 Then

ááá ISmartTagRecognizer_SmartTagName = _

ááá "znaΦka_01#MojeZnaΦka"

End If

End Property

 

Private Property Get ISmartTagRecognizer_SmartTagDownloadURL _

(ByVal SmartTagID As Long) As String

ISmartTagRecognizer_SmartTagDownloadURL = ""

End Property

á

NßÜ identifikßtor bude pracovat pouze s jednou inteligentnφ znaΦkou (SmartTagCount = 1), nßzev kterΘ je MojeZnaΦka. Pln∞ kvalifikovan² nßzev inteligentnφ znaΦky je slo₧en ze dvou celk∙: jmΘna jmennΘho prostoru inteligentnφ znaΦky a samotnΘho nßzvu inteligentnφ znaΦky. V naÜem p°φpad∞ je jmenn² prostor determinovßn textov²m °et∞zcem znaΦka_01. Za jmenn²m prostorem nßsleduje symbol m°φ₧ky (#), za kter²m je uvedeno pojmenovßnφ konkrΘtnφ inteligentnφ znaΦky (MojeZnaΦka). Kompletnφ nßzev inteligentnφ znaΦky je proto "znaΦka_01#MojeZnaΦka". Jeliko₧ nep°edpoklßdßme, ₧e bude existovat webovß strßnka, z nφ₧ bude mo₧nΘ zφskat novΘ informace pro inteligentnφ znaΦku, vlastnost SmartTagDownloadURL je naprogramovßna tak, aby vracela prßzdn² °et∞zec.

 

V dalÜφm kroku se zam∞°φme na sestavenφ seznamu textov²ch °et∞zc∙, kterΘ bude identifikßtor identifikovat jako citlivß data. Tento ·kol splnφme tak, ₧e vytvo°φme pole textov²ch °et∞zc∙, kterΘ poslΘze naplnφme po₧adovan²mi textov²mi °et∞zci. Bude-li identifikßtorem rozeznßn jak²koliv z t∞chto °et∞zc∙ v textovΘm dokumentu, bude opat°en teΦkovan²m podtr₧enφm a akΦnφm tlaΦφtkem pro zobrazenφ podporovan²ch akcφ inteligentnφ znaΦky.

 

  1. Za p°φkaz Implements ISmartTagRecognizer vlo₧te tyto dva °ßdky programovΘho k≤du:

 

Dim R∞t∞zce(5) As String

Dim PoΦetR∞t∞zc∙ As Integer

 

  1. DeklarovanΘ pole R∞t∞zce inicializujeme v udßlostnφ procedu°e Class_Initialize:

 

Private Sub Class_Initialize()

ááá R∞t∞zce(1) = "pc"

ááá R∞t∞zce(2) = "cpu"

ááá R∞t∞zce(3) = "gpu"

ááá R∞t∞zce(4) = "agp"

ááá R∞t∞zce(5) = "ht"

ááá PoΦetR∞t∞zc∙ = 5

End Sub

 

VÜechny textovΘ °et∞zce zapisujte pou₧itφm mal²ch pφsmen abecedy. Tato forma psanφ textov²ch °et∞zc∙ je v tomto p°φpad∞ d∙le₧itß proto, aby bylo mo₧nΘ provßd∞t vyhledßvßnφ textov²ch °et∞zc∙ s d∙razem na rozliÜovßnφ mal²ch a velk²ch pφsmen abecedy. Algoritmus pro vyhledßvßnφ textov²ch °et∞zc∙ se nachßzφ v nßsledujφcφm fragmentu zdrojovΘho k≤du.

 

  1. Poslednφm krokem bude implementace metody Recognize rozhranφ ISmartTagRecognizer. V t∞le tΘto metody je ulo₧en k≤d, jen₧ bude zjiÜ¥ovat, zdali se vstupnφ textov² °et∞zec nachßzφ v poli s podporovan²mi textov²mi °et∞zci. P°ipome≥me, ₧e je realizovßno äcase-sensitiveô vyhledßvßnφ.

 

Public Sub ISmartTagRecognizer_Recognize(ByVal Text As String, _

ByVal DataType As SmartTagLib.IF_TYPE, ByVal LocaleID As Long, _

ByVal RecognizerSite As SmartTagLib.ISmartTagRecognizerSite)

ááá Dim x As Integer

ááá Dim Index As Integer, Velikost╪et∞zce As Integer

ááá Dim Pb As SmartTagLib.ISmartTagProperties

ááá Text = LCase(Text)

ááá For x = 1 To PoΦetR∞t∞zc∙

ááááááá Index = InStr(Text, R∞t∞zce(x))

ááááááá Velikost╪et∞zce = Len(R∞t∞zce(x))

ááááááá While (Index > 0)

ááááááááááá Set Pb = RecognizerSite.GetNewPropertyBag

ááááááááááá RecognizerSite.CommitSmartTag _

ááááááááááá "znaΦka_01#MojeZnaΦka", Index, Velikost╪et∞zce, Pb

ááááááááááá Index = InStr(Index + Velikost╪et∞zce, Text, R∞t∞zce(x))

ááááááá Wend

ááá Next x

End Sub

 

 

Implementace Φlen∙ rozhranφ ISmartTagAction

 

Abychom mohli inteligentnφ znaΦce p°i°adit takΘ odpovφdajφcφ akce, musφme rovn∞₧ implementovat Φleny rozhranφ ISmartTagAction. Implementace t∞chto Φlen∙ se bude odehrßvat v dalÜφ t°φd∞, a proto do stßvajφcφho projektu p°idejte novou t°φdu a pojmenujte ji CAkce. Dßle pokraΦujte nßsledovn∞:

 

  1. Podobn∞ jako t°φda CIdentifikßtor, i t°φda CAkce musφ obsahovat p°φkaz Implements s urΦenφm rozhranφ, jeho₧ Φleny se chystßme implementovat. Proto ihned za p°φkaz Option Explicit vlo₧te tento °ßdek zdrojovΘho k≤du:

 

Implements ISmartTagAction

 

  1. Do nov∞ vytvo°enΘ t°φdy CAkce za°adφme programov² k≤d pro vlastnosti ProgID, Name a Desc. V²znam vlastnostφ je vysv∞tlen v tab. 3.

 

Nßzev vlastnosti

Charakteristika

ProgID

JednoznaΦn² identifikßtor t°φdy, kterß implementuje rozhranφ ISmartTagAction.

Name

StruΦnß charakteristika konkrΘtnφ implementace rozhranφ ISmartTagAction.

Desc

DelÜφ a podrobn∞jÜφ popis prßce implementovanΘho rozhranφ ISmartTagAction.

 

Tab. 3 û Charakteristika vlastnostφ ProgID, Name a Desc rozhranφ ISmartTagAction

 

  1. Programov² k≤d pro implementaci vlastnostφ:

 

Private Property Get ISmartTagAction_ProgId() As String

ááá ISmartTagAction_ProgId = "MojeZnaΦka.Akce"

End Property

 

Private Property Get ISmartTagAction_Name _

(ByVal LocaleID As Long) As String

á ISmartTagAction_Name = "Moje inteligentnφ znaΦka"

End Property

 

Private Property Get ISmartTagAction_Desc _

(ByVal LocaleID As Long) As String

á ISmartTagAction_Desc = "Provßdφ akce pro inteligentnφ znaΦku."

End Property

 

  1. Dßle budeme implementovat vlastnosti SmartTagCount, SmartTagName a SmartTagCaption. Charakteristiku uveden²ch vlastnostφ najdete v tab. 4.

á

Nßzev vlastnosti

Charakteristika

SmartTagCount

Determinuje poΦet typ∙ inteligentnφch znaΦek, kterΘ m∙₧e rozpoznat identifikßtor. V naÜφ ukßzce pracujeme pouze s jednφm typem inteligentnφ znaΦky, a proto bude tato vlastnost vracet celoΦφselnou hodnotu 1.

SmartTagName

Jde o pojmenovßnφ podporovanΘho typu inteligentnφ znaΦky v ji₧ znßmΘm formßtu, jen₧ je slo₧en z jmennΘho prostoru, znaku m°φ₧ky (#) a samotnΘho nßzvu typu znaΦky. áá

SmartTagCaption

Textov² °et∞zec, jen₧ se bude objevovat v kontextovΘ nabφdce akcφ inteligentnφ znaΦky.

 

Tab. 4 û Popis vlastnostφ SmartTagCount, SmartTagName a SmartTagCaption

 

  1. K≤d pro implementaci vlastnostφ SmartTagCount, SmartTagName a SmartTagCaption vypadß takto:

 

Private Property Get ISmartTagAction_SmartTagCount() As Long

áá ISmartTagAction_SmartTagCount = 1

End Property

 

Private Property Get ISmartTagAction_SmartTagName _

(ByVal SmartTagID As Long) As String

ááá If (SmartTagID = 1) Then

ááá ISmartTagAction_SmartTagName = "znaΦka_01#MojeZnaΦka"

á End If

End Property

 

Private Property Get ISmartTagAction_SmartTagCaption _

(ByVal SmartTagID As Long, ByVal LocaleID As Long) As String

á ISmartTagAction_SmartTagCaption = "MojeZnaΦka"

End Property

 

  1. PokraΦujeme implementacφ vlastnostφ VerbCount, VerbID, VerbCaptionFromID a VerbNameFromID. Vφce informacφ o t∞chto vlastnostech nabφzφ tab. 5.

 

Nßzev vlastnosti

Charakteristika

VerbCount

╪φkß, kolik akcφ podporuje implementovan² typ inteligentnφ znaΦky.

VerbID

Vlastnost vracφ jedineΦn² identifikßtor (ID) cφlovΘ akce inteligentnφ znaΦky.

VerbCaptionFromID

Specifikuje u₧ivatelsky p°φv∞tiv² textov² °et∞zec, kter² popisuje nßzev akce a jen₧ se objevφ v kontextovΘ nabφdce s dostupn²mi akcemi.

VerbNameFromID

Textov² identifikßtor akce, kter² je pou₧φvßn intern∞ cφlovou aplikacφ.

 

Tab. 5 û Bli₧Üφ pohled na vlastnosti VerbCount, VerbID, VerbCaptionFromID a VerbNameFromID

 

  1. Technickß strßnka implementace vlastnostφ je nßsledovnφ:

 

Private Property Get ISmartTagAction_VerbCount _

(ByVal SmartTagName As String) As Long

ááá If (SmartTagName = "znaΦka_01#MojeZnaΦka") Then

ááá ISmartTagAction_VerbCount = 1

á End If

End Property

 

Private Property Get ISmartTagAction_VerbID _

(ByVal SmartTagName As String, ByVal VerbIndex As Long) As Long

á ISmartTagAction_VerbID = VerbIndex

End Property

 

Private Property Get ISmartTagAction_VerbCaptionFromID _

(ByVal VerbID As Long, ByVal ApplicationName As String, _

ByVal LocaleID As Long) As String

á If (VerbID = 1) Then

ááá ISmartTagAction_VerbCaptionFromID = "Otev°φt internetov² prohlφ₧eΦ"

á End If

End Property

 

Private Property Get ISmartTagAction_VerbNameFromID _

(ByVal VerbID As Long) As String

áá If (VerbID = 1) Then

ááááááá ISmartTagAction_VerbNameFromID = "otevritProhlizec"

áá End If

End Property

 

  1. Finßlnφm krokem je implementace metody InvokeVerb, kterß mß na starosti exekuci akce v okam₧iku, kdy u₧ivatel klikne na nßzev tΘto akce v kontextovΘ nabφdce akcφ. Jenom na p°ipomenutφ, u₧ivatelsky p°φv∞tiv² nßzev akce vracφ vlastnost VerbCaptionFromID. Nßzev naÜφ akce je Otev°φt internetov² prohlφ₧eΦ, a proto do t∞la metody InvokeVerb zapφÜeme k≤d pro aktivaci prohlφ₧eΦe:

 

Public Sub ISmartTagAction_InvokeVerb _

(ByVal VerbID As Long, ByVal ApplicationName As String, _

ByVal Target As Object, _

ByVal Properties As SmartTagLib.ISmartTagProperties, _

ByVal Text As String, ByVal XML As String)

ááá Dim Prohlφ₧eΦ

ááá If (VerbID = 1) Then

ááááááá Set Prohlφ₧eΦ = CreateObject("InternetExplorer.Application")

ááááááá Prohlφ₧eΦ.Navigate2 ("www.pocitacovaencyklopedie.cz")

ááááááá Prohlφ₧eΦ.Visible = True

ááá End If

End Sub

 

 

Kompilace k≤du inteligentnφ znaΦky

 

Kompilaci projektu s k≤dem inteligentnφ znaΦky uskuteΦnφte v²b∞rem p°φkazu Make MojeZnaΦka.dll z nabφdky File. Vydßte-li tento pokyn, bude projektu zkompilovßn, p°iΦem₧ v²sledkem kompilace bude knihovna ActiveX DLL s nßzvem MojeZnaΦka.dll. Visual Basic 6.0 vygeneruje takΘ jedineΦnΘ identifikßtory (CLSID) pro identifikßtor (recognizer) a akci (action) inteligentnφ znaΦky. Tyto identifikßtory jsou zapsßny do registru operaΦnφho systΘmu. Aby Visual Basic 6.0 generoval v₧dy stejnΘ identifikßtory pro nßmi vytvo°enou inteligentnφ znaΦku, ujist∞te se, ₧e pou₧φvßte volbu Project Compatibility. Vyberte nabφdku Project a klepn∞te na polo₧ku Project Properties. V dialogovΘm okn∞ oznaΦte zßlo₧ku Component a podφvejte se do rßmeΦku Version Compatibility. Nenφ-li nastavena volba Project Compatibility, nastavte ji. Tak docφlφte toho, ₧e Visual Basic 6.0 bude pro vytvo°enou inteligentnφ znaΦku generovat stßle stejnΘ CLSID identifikßtory (a to i tehdy, uskuteΦnφte-li v programovΘm k≤du projektu n∞jakΘ zm∞ny). Nakonec ulo₧te projekt a zav°ete integrovanΘ v²vojovΘ prost°edφ Visual Basicu.

 

 

Registrace inteligentnφ znaΦky v operaΦnφm systΘmu áá

 

P°edtφm, ne₧ se vrhneme na testovßnφ funkΦnosti naÜφ novΘ inteligentnφ znaΦky, musφme realizovat registraci znaΦky v operaΦnφm systΘmu. Proces registrace je slo₧en ze dvou parcißlnφch proces∙:

 

 

 

Registrace akce (action) inteligentnφ znaΦky

á

  1. Spus¥te aplikaci Regedit.
  2. V sekci HKEY_CLASSES_ROOT vyhledejte klφΦ s nßzvem MojeZnaΦka.CAkce.
  3. Kdy₧ klepn∞te na symbol plus (+), jen₧ se nachßzφ nalevo od nßzvu klφΦe (MojeZnaΦka.CAkce), klφΦ se rozvine a zp°φstupnφ se vßm podklφΦ Clsid.
  4. OznaΦte podklφΦ Clsid. V pravΘm poli se objevφ polo₧ka s nßzvem (Default).
  5. Klepn∞te na polo₧ku (Default) prav²m tlaΦφtkem myÜi a z kontextovΘ nabφdky vyberte p°φkaz Modify.
  6. V dialogovΘm okn∞ Edit String si vÜimn∞te textovΘ pole Value data. ╚φseln∞-°et∞zcovß konstanta CLSID je implicitn∞ vybrßna do bloku. Klepn∞te na tuto konstantu prav²m tlaΦφtkem myÜi a vyberte p°φkaz Copy.
  7. DialogovΘ okno Edit String uzav°ete klepnutφm na tlaΦφtko Cancel.
  8. V sekci HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag vyhledejte klφΦ s nßzvem Actions. á
  9. Klikn∞te na symbol plus (+), jen₧ se nachßzφ nalevo od klφΦe Actions. KlφΦ Actions se otev°e a nabφdne vßm seznam vno°en²ch podklφΦ∙.
  10. Klepn∞te na klφΦ Actions prav²m tlaΦφtkem myÜi, z kontextovΘho menu vyberte nabφdku New a klepn∞te na polo₧ku Key.
  11. Okam₧it∞ bude vytvo°en nov² klφΦ, jeho₧ nßzev bude vybrßn do bloku. Klepn∞te na text v bloku prav²m tlaΦφtkem myÜi a z kontextovΘ nabφdky vyberte p°φkaz Paste. Nßzev klφΦe bude vypln∞n jedineΦn²m identifikßtorem (CLSID), jen₧ p°inßle₧φ hodnot∞ klφΦe MojeZnaΦka.CAkce ze sekce HKEY_CLASSES_ROOT.á

 

 

Registrace identifikßtoru (recognizer) inteligentnφ znaΦky

 

  1. V sekci HKEY_CLASSES_ROOT vyhledejte klφΦ s nßzvem MojeZnaΦka.CIdentifikßtor.
  2. Zobrazte podklφΦ Clsid a hodnotu polo₧ky (Default) zkopφrujte pomocφ systΘmovΘ schrßnky.
  3. V sekci HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag najd∞te klφΦ s nßzvem Recognizers.
  4. Zobrazte vÜechny podklφΦe klφΦe Recognizers.
  5. Klepn∞te na klφΦ Recognizers prav²m tlaΦφtkem myÜi a p°idejte nov² podklφΦ (NewàKey).
  6. Do nßzvu klφΦe vlo₧te zkopφrovanou hodnotu polo₧ky (Default) podklφΦe Clsid klφΦe MojeZnaΦka.CIdentifikßtor.

 

 

Testovßnφ inteligentnφ znaΦky

 

Ihned potΘ, co byla inteligentnφ znaΦka ·sp∞Ün∞ zaregistrovßna, m∙₧ete p°ikroΦit k testovacφ fßzi procesu. Spus¥te aplikaci Microsoft Word XP (2002), vyberte nabφdku Tools a klepn∞te na polo₧ku AutoCorrect Options. V dialogovΘm okn∞ vyberte zßlo₧ku Smart Tags (obr. 5).

 

 

Obr. 5 û DialogovΘ okno AutoCorrect s aktivovanou zßlo₧kou Smart Tags

 

V seznamu Recognizers by se m∞la nachßzet naÜe inteligentnφ znaΦka (Moje inteligentnφ znaΦka). Pokud se v seznamu polo₧ka s nßzvem naÜφ znaΦky neobjevuje, pravd∞podobn∞ inteligentnφ znaΦka nebyla ·sp∞Ün∞ zaregistrovanß v operaΦnφm systΘmu. Je-li tomu tak, vra¥te se do Φßsti, je₧ pojednßvß o registraci inteligentnφ znaΦky. Pokud seznam obsahuje naÜφ inteligentnφ znaΦku, je vÜe v naprostΘm po°ßdku, a tedy m∙₧eme zaΦat s testovßnφm znaΦky. Zav°ete dialog AutoCorrect a napiÜte do dokumentu textov² °et∞zec äagpô (uvozovky m∙₧ete vynechat) a stiskn∞te mezernφk nebo klßvesu Enter. Textov² °et∞zec bude opat°en teΦkovan²m podtr₧enφm fialovΘ barvy, ovÜem je mo₧nΘ, ₧e toto formßtovßnφ neuvidφte, proto₧e Word XP textov² °et∞zec äagpô neznß, a proto jej bude formßtovat pomocφ ΦervenΘ vlnovky. Tak se stane, ₧e Φervenß vlnovky jednoduÜe äp°ekryjeô teΦkovanΘ podtr₧enφ. Jestli₧e najedete na citliv² textov² °et∞zec kurzorem myÜi, objevφ se akΦnφ tlaΦφtko (obr. 6).

 

 

Obr. 6 û Citliv² text a akΦnφ tlaΦφtko, symbolizujφcφ p°φtomnost inteligentnφ znaΦky

 

AkΦnφ tlaΦφtko symbolizuje, ₧e text pod nφm byl rozeznßn identifikßtorem naÜφ inteligentnφ znaΦky. Naje∩te na toto tlaΦφtko myÜφ a klepn∞te na n∞j. Uvidφte kontextovou nabφdku s akcemi inteligentnφ znaΦky (v naÜem p°φpad∞ se objevφ pouze jedna akce s nßzvem Otev°φt internetov² prohlφ₧eΦ). Situaci znßzor≥uje obr. 7.

 

 

Obr. 7 û Inteligentnφ znaΦka v akci

 

Pro spuÜt∞nφ internetovΘho prohlφ₧eΦe klepn∞te na p°φsluÜnou akci inteligentnφ znaΦky.

 

 

Prßv∞ jste doΦetli TΘma m∞sφce.á

 

Jestli₧e se chcete dozv∞d∞t vφce informacφ o programovßnφ ve Visual Basicu .NET, nevßhejte a navÜtivte takΘ dalÜφ sekce rubriky Visual Basic. A jakß₧e je dneÜnφ nabφdka?

Serißl ZaΦφnßme s VB .NET

Porovnßvacφ operßtory Is a Like, p°i°azovacφ operßtory...

Programßtorskß laborato°

Pou₧itφ sdφlen²ch datov²ch Φlen∙, vlastnostφ a metod Vytvß°enφ miniatur obrßzk∙ (thumbnails)

Deklarovßnφ a generovßnφ udßlostφ