Emanuele Mattei
a- a+

Creazione di uno smart tag per word in Visual Basic .Net (parte I)

Pagina 1 di 2

Introduzione:

In questo articolo vedremo come creare uno smart tag per office 2003 in Visual Basic.Net 2003, tale smart tag avrà il compito di Visualizzare un sito o un inviare un email qualora su un documento Word viene scritta la parola Emanuele, come mostrato in figura 1 (se avete problemi nella visualizzazione delle immagini, andate nella categoria immagini, sezione smart tag vb.net)

Figura 1

La creazione di uno smarttag, comporta la creazione di due classi una chiamata Recognizer che avrà il compito di impostare le informazioni dello smart tag (nome, descrizione, ecc) e una chiamata Action che avrà il compito di eseguire determinate operazione (nel nostro caso aprire un sito o inviare un email).

Creazione di un progetto.

Avviamo Visual studio net 2003, si scelga nuovo progetto, nella finestra che viene aperta (figura 2)  scegliamo come tipo di progetto (parte sinistra)  Progetti di Visual basic, e nella parte modelli (parte di destra) libreria di classi, digitiamo un nome e scegliamo ok.

Figura 2 - smarttagvbnet2.jpg

Importazione

Verrà creata automatica una classe che si chiama class1.vb.

Rinominiamo sia il file che la classe con il seguente nome: Recognizer ed il nome del file Recognizer.vb.

A questo punto dobbiamo importare il riferimento smart tag versione 2.0, come mostrato nella figura successiva (figura 3)

Figura 3 - smarttagvbnet3.jpg

Per importare un riferimento in Visual Basic Net, bisogna selezionare la voce di menu Aggiungi riferimento, situato in progetti. Si aprirà una finestra, in essa scegliamo la voce Com, e selezioniamo la voce Microsoft Smart Tags 2.0 (office 2003, mentre 1.0 è per la versione office Xp).

Fatto ciò facciamo click sul pulsante seleziona e poi ok.

 

 

Stesura del codice

Dobbiamo importare due namespace, uno per la gestione dei smart tag e l’altro per la gestione dei file interoperabilità.

quindi in alto sopra della dicitura class scriviamo il seguente codice.

 

Imports Microsoft.Office.Interop.SmartTag

Imports System.Runtime.InteropServices

 

 

Fatto ciò bisogna creare un codice guid, esso ci permette di dare un riferimento alla dll che andremo a creare nel registro di sistema di windows.

Per assegnare un valore guid, bisogna fare click sulla voce di menù crea guid, situato in strumenti e nella finestra (figura 4) che viene aperta selezioniamo la quarta opzione ossia registry format facciamo click sul pulsante copia e poi sul pulsante esci.

Figura 4 - smarttagvbnet4.jpg

Il codice guid va messo nella classe guidattributes.

Come mostrato qui di seguito:

manuele.Recognizer"), _

    GuidAttribute("5CFC6CE8-6A70-4b68-9500-8480DBA013DA"), _

    ComVisible(True)> _

Public Class Recognizer

 

 La classe deve implementare l’interfaccia ismarttagrecognizer, di seguito è riportato il codice di tale operazione.

Implements  ISmartTagRecognizer

 quando si digita il pulsante invio dopo la parola ismarttagrecognizer, verranno scritte in automatico alcune proprietà.

Le proprietà di Recognizer

Analizziamo qui di seguito le varie proprietà ed il metodo recognizer della classe recognizer.

Proprietà Desc:

Ha il compito di dare una descrizione alla classe Recognizer 

 

Public ReadOnly Property  Desc(ByVal LocaleID  As Integer) As String  Implements Microsoft.Office.Interop.SmartTag.ISmartTagRecognizer.Desc

        Get

            'descrizione della classe recognizer

            Return "Descrizione Recognizer"

        End Get

    End Property

 

Proprieta Name:

Questa proprietà ha il compito di visualizzare il nome nell’elenco degli smarttag (figura 5) situati alla pagina  smart tag, della finestra che viene aperta facendo click sulla voce di menu opzioni di correzione automatica in strumenti di Word

Figura 5

 

Public ReadOnly Property  Name(ByVal LocaleID  As Integer) As String  Implements Microsoft.Office.Interop.SmartTag.ISmartTagRecognizer.Name

        Get

            'nome dello smart tag che verrà visualizzata nella finestra dei smart tag

            Return "Smart tag di Esempio"

        End Get

    End Property

 

Proprietà ProId:

Questa proprietà ritorna il valore id della classe Recognizer:

 

Public ReadOnly Property  ProgId() As String Implements Microsoft.Office.Interop.SmartTag.ISmartTagRecognizer.ProgId

        Get

            'ritorna il valore dell id della classe di Recognizer

            Return "SmartTagEmanuele.Recognizer"

        End Get

    End Property

 

Metodo Recognize:

Questo metodo ha il compito di ricercare nel documento la parola “emanuele” se viene trovata visualizza sotto la medesima parola una sottolineatura di colore viola che posizionando il mouse in prossimità visualizzerà l’icona dei smart Tag. 

 

Public Sub  Recognize(ByVal Text As String, ByVal DataType As Microsoft.Office.Interop.SmartTag.IF_TYPE, ByVal LocaleID As  Integer, ByVal  RecognizerSite  As Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite) Implements Microsoft.Office.Interop.SmartTag.ISmartTagRecognizer.Recognize

        'gestisco gli eventuali errori

        Try

            'verifico che il testo esista

            Dim IntPosizione As Integer

            IntPosizione = InStr(Text, "Emanuele" , CompareMethod.Text) 'Text.IndexOf("Ema") '


            If IntPosizione > 0 Then

                'creo un property bag

                Dim propbag As Microsoft.Office.Interop.SmartTag.ISmartTagProperties

                propbag = RecognizerSite.GetNewPropertyBag

                Dim StrTipoProperty As String

                Select Case DataType

                    Case IF_TYPE.IF_TYPE_CELL

                        StrTipoProperty = "IF_TYPE_CELL"

                    Case IF_TYPE.IF_TYPE_CHAR

                        StrTipoProperty = "IF_TYPE_CHAR"

                    Case IF_TYPE.IF_TYPE_PARA

                        StrTipoProperty = "IF_TYPE_PARA"

                    Case IF_TYPE.IF_TYPE_REGEXP

                        StrTipoProperty = "IF_TYPE_REGEXP"

                    Case IF_TYPE.IF_TYPE_SINGLE_WD

                        StrTipoProperty = "IF_TYPE_SINGLE_WD"

                End Select

                propbag.Write("DataType" , StrTipoProperty)

                'aggiongo il testo alla funzione testo

                propbag.Write("Text" , Text)

                'aggiungo l'id

                propbag.Write("LocaleID" , LocaleID.ToString())


                RecognizerSite.CommitSmartTag("urn:esempio-smarttag#SmartTagEmanuele" , IntPosizione + 1, 8, propbag)



            End If


        Catch ex As Exception

            EventLog.WriteEntry("SmartTag" , ex.Message, EventLogEntryType.Error)


        End Try


    End Sub

 

 

Di seguito verrà spiegata tale procedura.

Il metodo instr restituisce un numero, che corrisponde alla posizione della parola che vogliamo cercare.

L’oggetto propbag ha il compito di gestire lo smart tag, nell’esempio viene creato tramite il metodo GetNewPropertyBag della classe RecognizerSite.

Il metodo CommitSmartTag dell’oggetto RecognizerSite ha il compito di visualizzare tale tag, questo metodo accetta 4 argomenti, il nome del tag, l’inizio da dove iniziare la sottolineatura e la lunghezza di tale sottolineatura, ed il tag. Da notare che il promi argomento, ossia il nome dello smart tag, è il nome impostato nella proprietà smartTagName.

 

Proprietà SmartTagCount:

Questa proprietà ritorna il numero dei smart tag (nel nostro caso uno)

 

Public ReadOnly  Property SmartTagCount() As  Integer  Implements Microsoft.Office.Interop.SmartTag.ISmartTagRecognizer.SmartTagCount

        Get

            Return 1

        End Get

    End Property

 

Proprietà SmartTagDownloadURl

Questa proprietà ha il compito di ritornare un possibile url

 

 

Public ReadOnly  Property SmartTagDownloadURL(ByVal SmartTagID As  Integer) As  String Implements  Microsoft.Office.Interop.SmartTag.ISmartTagRecognizer.SmartTagDownloadURL

        Get

            'url dello smart tag

            Return ""

        End Get

    End Property

 

 

Proprietà SmartTAgName:

Questa proprietà imposta (restituisce) il nome per ogni singolo smart tag da notare che il nome dopo il cancellato è quello del progetto. 

 

Public ReadOnly  Property SmartTagName(ByVal SmartTagID As  Integer) As  String Implements  Microsoft.Office.Interop.SmartTag.ISmartTagRecognizer.SmartTagName

        Get

            'nome dello smart tag

            Return "urn:esempio-smarttag#SmartTagEmanuele"

        End Get

    End Property

 

Continua >>> 

 

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Lorenzo
Hai qualche domanda da fare?