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 “e
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
- Articolo precedente Creazione di componenti aggiuntivi per Excel con Visual Basic
- Articolo successivo Creazione di uno smart tag per word in Visual Basic .Net (parte II)