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í