Usando Smart Tags - Marcas inteligentes
Smart Tags ??? Marcas Inteligentes ??? Oque vem a ser isto ??? Um novo ambiente ? Uma nova tecnologia ???
As marcas inteligentes ( smart tags ) são uma das novidades que o office XP apresenta em sua integração com a Web. As marcas inteligentes implementam o reconhecimento dinâmico para termos dentro de documentos e e-mails. Com as Smart Tags podemos desenvolver 'pequenos arquivos' que após instalados fazem cocm que office XP possa carregar informações que são exibidas nos documentos do Word e Excel e Outlook ; podem ainda conectar estes documentos com os serviços do seu site na internet.
Podemos pensar nas marcas inteligentes como uma string com um tipo de informação embutido que pode ser reconhecida como uma informação de determinado tipo e que pode gerar um resposta como uma lista de possíveis ações a realizar : enviar um email , acessar uma URL , agendar um encontro , etc...
As marcas inteligentes podem automaticamente atuar em páginas Web sob o Windows XP e então inserir links em certas palavras como nomes de empresas , produtos, etc. . Se o usuário clicar no link criado uma nova janela será aberta com mais links para os sites Relacionados ( MSN , Microsoft, não podem faltar é claro ).
Isto causou uma certa oposição a esta tecnologia e aumentou as suspeitas sobre o monopólio pretendido pela Microsoft na WEB ;A Microsoft chegou a anunciar que não incluiria as Marcas inteligentes nas novas atualizações do Windows XP e Internet Explorer 6. Existe até um movimento de oposição que informar como desabilitar as Smart Tags em páginas web. Para 'proteger' suas páginas das Marcas Inteligentes inclua o código abaixo em cada página web:
<meta name="MSSmartTagsPreventParsing"
content="TRUE">
Não vou entrar no mérito da questão ; você decide...
O Office XP inclui algumas Marcas inteligentes que reconhecem datas , nomes , endereços , telefones, números, etc . Quer ver (na minha máquina estão instaladas algumas smart tags para língua inglesa) ?
A relação de smart tags
instaladas para minha máquina.
|
E o que o Visual Basic tem a haver com as Marcas Inteligentes ??? Ora você pode desenvolver as suas próprias marcas inteligentes usando o Visual C++ ou o Visual Basic . Para criar marcas inteligentes você vai precisar do seguinte:
Antes de mostrar como criar sua primeira marca inteligente vamos dar uma olhada na sua arquitetura.
A arquitetura das marcas inteligentes
As marcas inteligentes usam a tecnologia COM - Component Object Model - DLL também conhecida no VB como ActiveX DLL. A DLL COM deve suportar um número predefinido de interfaces como definido na Smart Tag Type Library.( No VB devemos fazer referência a Microsoft Smart Tags 1.0 Type Library - MSTAG.TLB)
Feito a referência devemos implantar duas interfaces: ISmartTagRecognizer e ISmartTagAction. A interface determina como duas entidades vão interagir e contém código e serviços; no caso das smart Tags a implementação torna possível fazer o reconhecimento e ativar as ações. Veja abaixo o esquema:
|
O processo é idêntico ao desenvolvimento de um Add-In (Se você já desenvolveu um vai perceber) e, basicamente temos que nos preocupar com duas coisas : as APIs e o mecanismo de registro. As APIs implementam o reconhecimento de ações e serviços e o registro das DLLs marcas inteligentes faz com que as aplicações Office possam reconhecer as marcas e ativar suas ações. Você pode usar o regsvr32.exe para registrar ou deixar isto a cargo do programa instalador. O Office XP contém chaves especiais no registro do Windows que identificam quais DLLs instaladas são Marcas Inteligentes. A chaves são :
- a chave recognizer - HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognizers
- a chave actions - HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Actions
Para evitar conflitos de com smart tags que estejam atuando simultaneamente a arquitetura smart tag utiliza os namespaces XML ( baseados no consórcio W3C ) de forma que quando um smart tag reconhece um termo a ele é atribuído um identificador único. Por exemplo , a smart tag para reconhecimento de datas da microsoft usa o seguinte namespace:
urn:schemas-microsoft-com:office:smarttags#date
Se você for sua própria smart tag para reconhecimento de datas você poderá o seguinte namespace:
urn:schemas-seu-nome-com:smarttag#date
Assim se houver concorrência será apresenta uma lista com as opções das duas smart tags.
Criando sua marca inteligente
Vamos ver como criar sua marca inteligente :
1- Inicie o Visual Basic e em novo projeto selecione - ActiveX DLL e altere o nome para algo sugestivo , eu vou usar jcmsoft.
2- Agora no menu Project | References , inclua a referência a - Microsot Smart tags 1.0 Type
3- Vamos criar as classes : SmartTagAction e SmartTagRecognizer
SmartTagAction - irá fazer o reconhecimento do texto e esta dividida em três partes:
SmartTabRecognizer - define quais as ações executadas após reconhecer um trecho de texto.
Veja como criar as duas classes:
4- No menu Project clique em Properties e informe o nome do projeto na caixa Project Name ( vou informar jcmsoft)
5- Na janela Properties , selecione Class1 e altere o nome para SmartTagAction (Fig 1)
|
|
Fig 1 | Fig 2 - |
6- No menu Project selecione a opção - Add Class Module e clique em Abrir . Para renomear a classe repita o procedimento feito para class1. Selecione - class2 - e informe o nome SmartTagRecognizer (fig 2)
7- Na seção - General Declarations da classe - SmartTagRecognizer - digite o seguinte código:
8- Na seção - General Declarations da classe - SmartTagAction - digite o seguinte código:
Implements IsMartTagAction
9- Agora salve o seu projeto.
Implementando a interface ISmartTagRecognizer
10 - Após configurar o seu projeto DLL vamos implementar a interface para ISmartTagRecognizer. Para isto devemos informar um identificador - ID - único , um título e a descrição para a smart tag através de código para classe como abaixo:
Private Property Get
ISmartTagRecognizer_ProgId() As String ISmartTagRecognizer_ProgId = "jcmsoft.SmartTagRecognizer " End Property Private Property Get
ISmartTagRecognizer_Name(ByVal LocaleID As Long) As String Private Property Get
ISmartTagRecognizer_Desc(ByVal LocaleID As Long) As String |
11- A seguir forneça o número dos tipos das smart tags , a lista de ações e os locais adicionais para download das smart tags . Conforme o código a seguir :
Private Property Get
ISmartTagRecognizer_SmartTagCount() As Long ' Número de tipos de Marcas Inteligentes este Recognizer vai possuir. ISmartTagRecognizer_SmartTagCount = 1 End Property Private Property Get
ISmartTagRecognizer_SmartTagName(ByVal SmartTagID As Long) As String Private Property Get
ISmartTagRecognizer_SmartTagDownloadURL(ByVal SmartTagID As Long) As String |
12- Forneça uma lista de itens para reconhecimento inserindo o código a seguir na seções General Declarations e Class_Initialize :
Dim termos(6) As String Dim numTermos As Integer Private Sub Class_Initialize() |
13- Para encerrar insira o código que irá fazer a procura de strings a cada texto digitado no Word , Excel ou Outlook Express para fornecer o método de reconhecimento das smart tags.
Public
Sub ISmartTagRecognizer_Recognize(ByVal Text As String, ByVal DataType As
SmartTagLib.IF_TYPE, ByVal LocaleID As Long, ByVal RecognizerSite As
SmartTagLib.ISmartTagRecognizerSite)
Dim i As Integer Dim tamanho As Integer Text = LCase(Text) |
Implementando a interface ISmartTagAction
14- Primeiro vamos fornecer um identificador único , um título e uma descrição para a smart tag DLL:
Private Property Get ISmartTagAction_ProgId()
As String Private Property Get ISmartTagAction_Name(ByVal
LocaleID As Long) As String Private Property Get ISmartTagAction_Desc(ByVal
LocaleID As Long) As String |
15- A seguir informe as propriedades : ProgID , Name e Desc , os tipos de marcas ( pedaços de textos que serão reconhecidos ) para isto usamos as propriedades:
e as matrizes com os textos que serão reconhecidos pelas marcas conforme o código abaixo:
Private Property Get
ISmartTagAction_SmartTagCount() As Long ' Número de tipos de Marcas Inteligentes que este Recognizer vai possuir. ISmartTagAction_SmartTagCount = 1 End Property Private Property Get
ISmartTagAction_SmartTagName(ByVal SmartTagID As Long) As String Private Property Get
ISmartTagAction_SmartTagCaption(ByVal SmartTagID As Long, ByVal LocaleID As
Long) As String |
16 - Agora vamos forncer o código para os números , nomes, e IDs da smart tags conforme código abaixo:
Private Property Get
ISmartTagAction_VerbCount(ByVal SmartTagName As String) As Long ' Especificar o numero de ações relacionada a esta Marca Inteligente If (SmartTagName = "schemas-jcmsoft-com/jcmsoft#visualbasic") Then ISmartTagAction_VerbCount = 1 End If End Property Private Property Get ISmartTagAction_VerbID(ByVal
SmartTagName As String, ByVal VerbIndex As Long) As Long Private Property Get
ISmartTagAction_VerbCaptionFromID(ByVal VerbID As Long, ByVal
ApplicationName As String, ByVal LocaleID As Long) As String Private Property Get
ISmartTagAction_VerbNameFromID(ByVal VerbID As Long) As String |
Para encerrar vamos fornecer o código para lista de ações correspondentes a cada opção da smart tag clicada.
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 ie If (VerbID = 1) Then Set ie = CreateObject("InternetExplorer.Application") ie.Navigate2 ("www.geocities.com/macoratti") ie.Visible = True End If End Sub |
17 - Compile o seu projeto e registre o componente DLL na sua máquina . Uma das formas é usar o regsvr32.exe: Regsvr32.exe jcmsoft.dll
Testando a sua primeira Marca inteligente
Vai continuar
...
José Carlos Macoratti